mysql联合唯一约束 - 数据库添加唯一索引




我如何为MySQL中的多列指定唯一约束? (6)

MySql 5或更高版本的行为就像这样(我刚刚测试过):

  • 您可以定义涉及可空列的唯一约束。 假设你定义了一个唯一的约束(A,B),其中A不可为空,但B是
  • 当评估这样一个约束时,你可以有(A,null)多少次你想要的(相同的A值!)
  • 你只能有一个(A,非空B)对

示例:PRODUCT_NAME,PRODUCT_VERSION'glass',null'glass',null'wine',1

现在,如果您尝试再次插入('wine'1),它会报告违反约束条件希望这有助于

我有一张桌子:

table votes (
    id,
    user,
    email,
    address,
    primary key(id),
);

现在我想让列用户,电子邮件地址唯一(一起)。

我如何在MySql中做到这一点?

  • 当然这个例子就是......一个例子。 所以请不要担心语义。

你试过这个吗?

UNIQUE KEY `thekey` (`user`,`email`,`address`)

如果行中有NULL值,则多列唯一索引在MySQL中不起作用,因为MySQL将NULL视为唯一值,至少目前没有任何逻辑可以在多列索引中解决该问题。 是的,这种行为是疯狂的,因为它限制了很多多列索引的合法应用程序,但它就是这样......迄今为止,它是一个在MySQL上被标记为“不会修复”的bug错误轨道...


您可以通过phpMyAdmin添加多列唯一索引。 (我在版本4.0.4中测试过)

导航到目标表的结构页面。 向其中一列添加唯一索引。 展开结构页面底部的索引列表以查看刚刚添加的唯一索引。 点击编辑图标,然后在下面的对话框中添加额外的列到唯一索引。


这适用于MySQL版本5.5.32

ALTER TABLE  `tablename` ADD UNIQUE (`column1` ,`column2`);

需要添加以下唯一索引:

1)table_name
2)index_name
3)你想添加索引的列

ALTER TABLE  `tablename` 
ADD UNIQUE index-name
(`column1` ,`column2`,`column3`,...,`columnN`);

在你的情况下,我们可以创建如下的独特索引:

ALTER TABLE `votes`ADD 
UNIQUE <votesuniqueindex>;(`user` ,`email`,`address`);




database-table