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 是相同的,如果两者都是唯一键则不允许这样做。

您只需要在 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'

你可以自己试试here

你需要composite unique index.

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