我有一张桌子:

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

现在我想做柱子 用户、电子邮件、地址 独一无二(一起)。

我如何在 MySql 中执行此操作?

  • 当然,这个例子只是...一个例子。所以请不要担心语义。
有帮助吗?

解决方案

ALTER TABLE `votes` ADD UNIQUE `unique_index`(`user`, `email`, `address`);

其他提示

我有一个 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 `id_box_elements` (`id_box_elements`,`id_router`)
);

并且 UNIQUE KEY 按预期工作,它允许 id_box_elements 和 id_router 的多个 NULL 行。

我正在运行 MySQL 5.1.42,所以可能对上面讨论的问题有一些更新。幸运的是,它有效,并希望它能保持这种状态。

如果行中有 NULL 值,多列唯一索引在 MySQL 中不起作用,因为 MySQL 将 NULL 视为唯一值,并且至少目前在多列索引中没有逻辑来解决它。是的,这种行为很疯狂,因为它限制了多列索引的许多合法应用,但事实就是如此......到目前为止,这是一个在 MySQL bug-track 上被标记为“不会修复”的错误......

你试过这个吗?

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

这适用于 mysql 版本 5.5.32

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

您可以通过添加多列唯一索引 php我的管理员. 。(我在4.0.4版本测试过)

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

MySql 5 或更高版本的行为如下(我刚刚测试过):

  • 您可以定义涉及可为空列的唯一约束。假设您定义了一个约束 unique (A, B),其中 A 不可为空,但 B 可以
  • 当评估这样的约束时,您可以多次使用 (A, null) (相同的 A 值!)
  • 你只能有一对(A,非空 B)

例子:product_name,product_version'玻璃',空玻璃',null'葡萄酒,1

现在,如果您再次尝试插入('wine' 1),它将报告违反了约束条件 希望对您有所帮助

我这样做:

CREATE UNIQUE INDEX index_name ON TableName (Column1, Column2, Column3);

我的独特约定 index_nameTableName_Column1_Column2_Column3_uindex.

如果您想避免将来重复。创建另一列,例如 id2。

UPDATE tablename SET id2 = id;

现在在两列上添加唯一性:

alter table tablename add unique index(columnname, id2);

要添加唯一索引,需要以下内容:

1) 表名
2) 索引名称
3)要添加索引的列

ALTER TABLE  `tablename` 
ADD UNIQUE index-name
(`column1` ,`column2`,`column3`,...,`columnN`);

根据您的情况,我们可以创建唯一索引,如下所示:

ALTER TABLE `votes`ADD 
UNIQUE <votesuniqueindex>;(`user` ,`email`,`address`);

如果您在 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)
);
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top