链接MySQL中的2个ID

San*_*der 1 php mysql mysql5

我有这张桌子

CREATE TABLE IF NOT EXISTS `links` (
  `link_id` int(20) NOT NULL AUTO_INCREMENT,
  `item1_id` int(20) NOT NULL,
  `item2_id` int(20) NOT NULL,
  PRIMARY KEY (`link_id`),
  UNIQUE KEY `item_id` (`item1_id`,`item2_id`)
) ENGINE=InnoDB;
Run Code Online (Sandbox Code Playgroud)

如何约束它以便the item_id只能在OR中出现一次item1_iditem2_id

因为我想要一个项目只链接到另一个项目..

gbn*_*gbn 5

我想要一个项目只链接到另一个项目

这意味着您不需要链接表.您只需要linkedItemId在Item表中使用一个列,该列具有唯一约束.一旦Item2链接到Item1(Item1ID在Item2行的linkedItemId中),那么其他任何东西都不能链接到Item1.

此外,链接表不需要自己的代理键

编辑,请注意,MySQL允许在唯一索引中使用多个NULL(与SQL Server不同,在SQL Server中,您使用过滤的唯一索引来忽略NULL)

来自MySQL 5.5 CREATE INDEX

对于所有引擎,UNIQUE索引允许可以包含NULL的列的多个NULL值