MySQL 两列唯一键
MySQL two-column unique key
我知道我可以让两列成为唯一键,但这并不是我想要的。
我想要这样,例如如果 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
是相同的,如果两者都是唯一键则不允许这样做。
您只需要在 col1
和 col2
:
两列之间声明一个唯一索引
CREATE TABLE Table1
(
`col1` int,
`col2` int,
UNIQUE `unique_index`(`col1`, `col2`)
);
如果您尝试将 1, 1
插入到 col1 和 col2 中,您将收到以下错误:
Duplicate entry '1-1' for key 'unique_index'
你可以自己试试here。
你需要composite unique index
.
ALTER TABLE tablename ADD UNIQUE KEY `uidx` (`col1`, `col2`);
我知道我可以让两列成为唯一键,但这并不是我想要的。
我想要这样,例如如果 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
是相同的,如果两者都是唯一键则不允许这样做。
您只需要在 col1
和 col2
:
CREATE TABLE Table1
(
`col1` int,
`col2` int,
UNIQUE `unique_index`(`col1`, `col2`)
);
如果您尝试将 1, 1
插入到 col1 和 col2 中,您将收到以下错误:
Duplicate entry '1-1' for key 'unique_index'
你可以自己试试here。
你需要composite unique index
.
ALTER TABLE tablename ADD UNIQUE KEY `uidx` (`col1`, `col2`);