MySQL两列唯一键[重复]
Posted
技术标签:
【中文标题】MySQL两列唯一键[重复]【英文标题】:MySQL two-column unique key [duplicate] 【发布时间】:2018-06-05 04:09:35 【问题描述】:我知道我可以让两列成为唯一键,但这并不是我想要的。
我想要这样,例如如果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
是相同的,如果两者都是唯一键,则不允许这样做。
【问题讨论】:
如何将两列连接到第三列并使其成为唯一键? 您可以在多个键上放置唯一约束,例如ALTER TABLE yourtable ADD UNIQUE
unique_index(
col1,
col2);
正如@GiorgosBetsos 所说,您想要一个两字段唯一键
【参考方案1】:
你需要composite unique index
。
ALTER TABLE tablename ADD UNIQUE KEY `uidx` (`col1`, `col2`);
【讨论】:
【参考方案2】:您只需要在col1
和col2
两列之间声明一个唯一索引:
CREATE TABLE Table1
(
`col1` int,
`col2` int,
UNIQUE `unique_index`(`col1`, `col2`)
);
如果你尝试在 col1 和 col2 中插入1, 1
, 你会得到如下错误:
Duplicate entry '1-1' for key 'unique_index'
你可以自己试试here。
【讨论】:
以上是关于MySQL两列唯一键[重复]的主要内容,如果未能解决你的问题,请参考以下文章