我有这个 mySql 表:
create table associations
(email1 varchar(30),
email2 varchar(30),
primary key(email1, email2));
现在在这个表中,如果我按如下方式插入两行:
insert into associations values('a@abc.com','b@abc.com')
;
insert into associations values('b@abc.com','a@abc.com');
这些在数据库中是可以接受的。我想做的是它们不应该被数据库接受,因为我只对键的组合感兴趣而不是它们的顺序。
mysql(或任何其他数据库)中是否有任何允许我这样做的内置功能/关键字/hack?
最佳答案
在支持检查约束的 RDBMS 中,您可能会强制这两个条目以特定顺序出现。*这可以确保您所描述的那种重复不会发生,因为这两个顺序之一将被拒绝。不幸的是,MySQL 不提供检查约束,尽管接受了对 this question 的回答。提出了一种使用触发器实现类似结果的方法。
* 这是假设您对列数据类型有总顺序,在本例中是这样。
关于Mysql组合键顺序相关性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23375765/