我有一个案例,其中我有两列,但两者的值应该是唯一的。所以你可以考虑下表
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)
);
我想要的功能是,电子邮件不能在email
和secondary_email
列中重复。因此,给定的电子邮件只能与一个用户链接。我们可以在没有触发器的MySQL中实现吗?目前我正在通过应用程序逻辑来管理它,有时很难处理,因为不同团队的不同人员在表中插入/更新数据。
另外,我的用户表是按照数百万条记录的顺序添加的,并且还有辅助移动选项。创建一个2x大小的第二个(或第三个)表并且总是连接两个(或三个)表将使我的情况变得更糟。
提前感谢您的所有投入..
答案 0 :(得分:1)
如果您的设计正常化,您可以拥有一个引用您的用户详细信息的电子邮件表:
user_details_email
------------------
user_details_id (FK)
email_address
主键user_details_id, email_address
。您可以选择添加一个布尔列,将其标记为主要列。