2014-11-05 54 views
0

这里是情况 - >我正在MySQL环境中使用两列数据(A和B - 两个整数)。 A和B是非唯一属性,但A & B的每一行/片必须是唯一的。MySQL双列主键困难

例如,这些都是有效的条目:

 
A  B 
--- --- 
1  1 
1  2 
1  3 

在这种情况下,无效的第三行下面导致它打破了A和B的每个组合必须是唯一的规则:

 
A  B 
--- --- 
1  2 
1  3 
1  2 

对于在两个列的组合效果创建主键的MySQL设置中对这种类型的关系进行建模的最佳方式是什么?我可以将此逻辑缩减为一个主键吗?在那种情况下,我如何确保每一行都不违反规则?

+0

退房[这里两个答案](http://stackoverflow.com/questions/6494276/mysql-two-fields-as-primary-keys-1 -field-as-unique-a-question) – 2014-11-05 03:39:39

+0

为什么你不只是有一个两列主键? – 2014-11-05 03:47:27

+0

感谢您的回复!我是新来的这个东西,并没有你可以有两个列主键 – Eugene 2014-11-05 06:00:35

回答

1

尝试唯一索引:

ALTER TABLE `table` ADD UNIQUE INDEX (`A`, `B`); 

您必须消除重复表之前该查询工作,但一旦这样做,那么你肯定可以在表中具有独特的A + B行。查询可以同时使用,但不必:

SELECT * from `table` WHERE `A`=1 and `B`=2; 
+0

感谢您的回应!这种方法与Dan Bracuk提到的创建两列主键有什么不同? – Eugene 2014-11-05 06:01:29

+0

您不需要A和B两个值。 – mainstreetmark 2014-11-05 12:56:16

1

您可以创建新的任意键值(通常为连续整数),也可以从两列创建组合键。