MySQL两列唯一键

7
我知道我可以把两列设为唯一键,但这并不是我想要的。
我希望如果col1='1',col2='2',那么就不能有另一行的值也为col1='1',col2='2',但完全可以执行以下操作:
+--------+--------+
|  col1  |  col2  |
+--------+--------+
|    1   |    1   |
|    1   |    2   |
|    2   |    1   |
|    2   |    2   |
+--------+--------+

虽然这是不可能的:

+--------+--------+
|  col1  |  col2  |
+--------+--------+
|    1   |    1   |
|    1   |    1   |
+--------+--------+

将两个唯一键都设置为不可行,因为在 col1='1',col2='1'col1='1',col2='2' 中,col1 是相同的,如果两个都是唯一键,则不允许这种情况。


1
将这两列连接到第三列,然后将其作为唯一键,怎么样? - p130ter
2
您可以在多个键上放置唯一约束,例如 ALTER TABLE yourtable ADD UNIQUE unique_index(col1, col2); - Giorgos Betsos
1
你想要一个像@GiorgosBetsos所说的两个字段唯一键。 - apomene
2个回答

14

你需要复合唯一索引

ALTER TABLE tablename ADD UNIQUE KEY `uidx` (`col1`, `col2`);

6

您只需要在两列col1col2之间声明一个唯一索引:

CREATE TABLE Table1
(
  `col1` int, 
  `col2` int,
   UNIQUE `unique_index`(`col1`, `col2`)
);

如果您尝试将 1, 1 插入到 col1 和 col2 中,您将会得到以下错误:
Duplicate entry '1-1' for key 'unique_index'

你可以在这里尝试一下。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接