我有一张桌子:
table votes (
id,
user,
email,
address,
primary key(id),
);
现在我想让列用户,电子邮件,地址唯一(一起)。
如何在MySql中做到这一点?
当然这个例子只是…一个例子。所以请不要担心语义。
我有一张桌子:
table votes (
id,
user,
email,
address,
primary key(id),
);
现在我想让列用户,电子邮件,地址唯一(一起)。
如何在MySql中做到这一点?
当然这个例子只是…一个例子。所以请不要担心语义。
当前回答
PostgreSQL… 对于索引,它不起作用;它给了我一个错误,所以我这样做:
alter table table_name
add unique(column_name_1,column_name_2);
PostgreSQL给索引起了自己的名字。我想你可以在表的选项中更改索引的名称,如果需要更改的话…
其他回答
PostgreSQL… 对于索引,它不起作用;它给了我一个错误,所以我这样做:
alter table table_name
add unique(column_name_1,column_name_2);
PostgreSQL给索引起了自己的名字。我想你可以在表的选项中更改索引的名称,如果需要更改的话…
MySql 5或更高版本的行为是这样的(我刚刚测试过):
您可以定义包含可空列的唯一约束。假设你定义了一个唯一的约束(a, B),其中a不是可空的,但B是 当计算这样的约束时,你可以有(a, null)任意多次你想要的(相同的a值!) 你只能有一个(A,不是空B)对
例子: PRODUCT_NAME, PRODUCT_VERSION “玻璃”,null “玻璃”,null “酒”,1
现在,如果您尝试再次插入('wine' 1),它将报告违反约束 希望这能有所帮助
这个教程对我很有用
ALTER TABLE table_name
ADD CONSTRAINT constraint_name UNIQUE (column1, column2, ... column_n);
https://www.mysqltutorial.org/mysql-unique-constraint/
我是这样做的:
CREATE UNIQUE INDEX index_name ON TableName (Column1, Column2, Column3);
我对唯一index_name的约定是TableName_Column1_Column2_Column3_uindex。
我有一个MySQL表:
CREATE TABLE `content_html` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`id_box_elements` int(11) DEFAULT NULL,
`id_router` int(11) DEFAULT NULL,
`content` mediumtext COLLATE utf8_czech_ci NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `my_uniq_id` (`id_box_elements`,`id_router`)
);
UNIQUE KEY就像预期的那样工作,它允许id_box_elements和id_router的多个NULL行。
我正在运行MySQL 5.1.42,所以上面讨论的问题可能有一些更新。幸运的是,它起作用了,希望它能一直保持下去。