我有一张桌子:
table votes (
id,
user,
email,
address,
primary key(id),
);
现在我想让列用户,电子邮件,地址唯一(一起)。
如何在MySql中做到这一点?
当然这个例子只是…一个例子。所以请不要担心语义。
我有一张桌子:
table votes (
id,
user,
email,
address,
primary key(id),
);
现在我想让列用户,电子邮件,地址唯一(一起)。
如何在MySql中做到这一点?
当然这个例子只是…一个例子。所以请不要担心语义。
当前回答
这个教程对我很有用
ALTER TABLE table_name
ADD CONSTRAINT constraint_name UNIQUE (column1, column2, ... column_n);
https://www.mysqltutorial.org/mysql-unique-constraint/
其他回答
MySql 5或更高版本的行为是这样的(我刚刚测试过):
您可以定义包含可空列的唯一约束。假设你定义了一个唯一的约束(a, B),其中a不是可空的,但B是 当计算这样的约束时,你可以有(a, null)任意多次你想要的(相同的a值!) 你只能有一个(A,不是空B)对
例子: PRODUCT_NAME, PRODUCT_VERSION “玻璃”,null “玻璃”,null “酒”,1
现在,如果您尝试再次插入('wine' 1),它将报告违反约束 希望这能有所帮助
多列唯一索引在MySQL中不起作用,如果你在row中有一个NULL值,因为MySQL将NULL视为一个唯一值,至少目前在多列索引中没有围绕它工作的逻辑。是的,这种行为是疯狂的,因为它限制了许多多列索引的合法应用,但它就是这样……到目前为止,这是一个在MySQL bug-track上被标记为“不会修复”的错误…
如果你想避免重复以后。创建另一个列id2。
UPDATE tablename SET id2 = id;
现在在两列上添加unique:
alter table tablename add unique index(columnname, id2);
如果你在mysql中创建表,请使用以下命令:
create table package_template_mapping (
mapping_id int(10) not null auto_increment ,
template_id int(10) NOT NULL ,
package_id int(10) NOT NULL ,
remark varchar(100),
primary key (mapping_id) ,
UNIQUE KEY template_fun_id (template_id , package_id)
);
你试过这个吗?
UNIQUE KEY `thekey` (`user`,`email`,`address`)