我有一张桌子:

table votes (
    id,
    user,
    email,
    address,
    primary key(id),
);

现在我想让列用户,电子邮件,地址唯一(一起)。

如何在MySql中做到这一点?

当然这个例子只是…一个例子。所以请不要担心语义。


当前回答

如果你在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)
);

其他回答

这适用于mysql 5.5.32版本

ALTER TABLE  `tablename` ADD UNIQUE (`column1` ,`column2`);

你可以通过phpMyAdmin添加多列唯一索引。(我在4.0.4版本中进行了测试)

导航到目标表的结构页。向其中一列添加唯一索引。展开结构页底部的Indexes列表,以查看刚刚添加的惟一索引。单击编辑图标,在下面的对话框中,您可以向该唯一索引添加其他列。

你试过这个吗?

UNIQUE KEY `thekey` (`user`,`email`,`address`)

PostgreSQL… 对于索引,它不起作用;它给了我一个错误,所以我这样做:

alter table table_name
add unique(column_name_1,column_name_2);

PostgreSQL给索引起了自己的名字。我想你可以在表的选项中更改索引的名称,如果需要更改的话…

多列唯一索引在MySQL中不起作用,如果你在row中有一个NULL值,因为MySQL将NULL视为一个唯一值,至少目前在多列索引中没有围绕它工作的逻辑。是的,这种行为是疯狂的,因为它限制了许多多列索引的合法应用,但它就是这样……到目前为止,这是一个在MySQL bug-track上被标记为“不会修复”的错误…