Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySQL两列唯一键_Mysql_Database_Key_Unique Key - Fatal编程技术网

MySQL两列唯一键

MySQL两列唯一键,mysql,database,key,unique-key,Mysql,Database,Key,Unique Key,我知道我可以使两列成为唯一的键,但这并不是我想要的 例如,如果col1='1',col2='2',则不能有另一行col1='1',col2='2',但完全可以执行以下操作: +--------+--------+ | col1 | col2 | +--------+--------+ | 1 | 1 | | 1 | 2 | | 2 | 1 | | 2 | 2 | +--------+--------+ 虽然

我知道我可以使两列成为唯一的键,但这并不是我想要的

例如,如果
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`)
);
如果尝试在col1和col2中插入
1,1
,将出现以下错误:

Duplicate entry '1-1' for key 'unique_index'

您可以自己尝试。

您需要
复合唯一索引

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

将两列连接到第三列并使其成为唯一键怎么样?您可以对多个键设置唯一约束,例如,
ALTER TABLE yourtable ADD unique
unique\u index
col1
col2
您需要一个两字段的唯一键,正如@GiorgosBetsos所说的