列之间唯一的值

时间:2014-02-27 17:17:50

标签: mysql indexing unique-constraint

我有一个案例,其中我有两列,但两者的值应该是唯一的。所以你可以考虑下表

CREATE TABLE user_details(
  id int(11) AUTO_INCREMENT PRIMARY KEY,
  email varchar(200),
  secondary_email varchar(200),
  unique key(email),
  unique key(secondary_email)
);

我想要的功能是,电子邮件不能在emailsecondary_email列中重复。因此,给定的电子邮件只能与一个用户链接。我们可以在没有触发器的MySQL中实现吗?目前我正在通过应用程序逻辑来管理它,有时很难处理,因为不同团队的不同人员在表中插入/更新数据。

另外,我的用户表是按照数百万条记录的顺序添加的,并且还有辅助移动选项。创建一个2x大小的第二个(或第三个)表并且总是连接两个(或三个)表将使我的情况变得更糟。

提前感谢您的所有投入..

1 个答案:

答案 0 :(得分:1)

如果您的设计正常化,您可以拥有一个引用您的用户详细信息的电子邮件表:

user_details_email
------------------
user_details_id (FK)
email_address

主键user_details_id, email_address。您可以选择添加一个布尔列,将其标记为主要列。