首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Mysql组合密钥顺序相关性

Mysql组合密钥顺序相关性
EN

Stack Overflow用户
提问于 2014-04-29 21:36:53
回答 2查看 194关注 0票数 3

我有一张mySql表:

代码语言:javascript
复制
create table associations
(email1 varchar(30), 
email2 varchar(30),
primary key(email1, email2));

现在,在这个表中,如果我按如下方式插入两行:

insert into associations values('a@abc.com','b@abc.com')

代码语言:javascript
复制
insert into associations values('b@abc.com','a@abc.com');

这些在数据库中是可以接受的。我想做的是,它们不应该被数据库接受,因为,我只对键的组合感兴趣,而不是对它们的 order感兴趣。

mysql中是否有任何内置的功能/关键字/hack(或者其他数据库)允许我这样做?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-05-05 06:28:16

这对我有用,我想出了一个扳机:

代码语言:javascript
复制
mysql> create trigger insert_check_associations before insert on associations
-> for each row
-> begin
-> if new.email1>new.email2 then
-> set @a = new.email2;
-> set new.email2 = new.email1;
-> set new.email1 = @a;
-> end if;
-> end;//

查询确定,0行受影响(0.07秒)

此触发器按递增顺序交换两个值。

票数 1
EN

Stack Overflow用户

发布于 2014-04-29 21:47:10

在支持check约束的RDBMS中,可以强制两个条目按特定顺序显示。*这确保您所描述的类型的复制不会发生,因为两个订单中的一个将被拒绝。不幸的是,MySQL没有提供检查约束,尽管对this question的公认答案提出了一种使用触发器实现类似结果的方法。

*这是假设您对列数据类型有一个总的顺序,在本例中是这样的。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23375765

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档