作者热门文章
- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我有一个包含两行的表:AccountID
和 PartnerAccountID
。我需要防止两列重复。意思是,如果一个条目存在:
| AccountID | PartnerAccountID |
| 1 | 2 |
我需要确保以下内容不能同时存在:
| AccountID | PartnerAccountID |
| 2 | 1 |
有什么方法可以在约束条件下做到这一点?
最佳答案
如果您可以在表达式上创建唯一索引,那就太好了:
create unique index unq_t_AccountID_PartnerAccountID
on t((case when AccountID < PartnerAccountID then AccountId else PartnerAccountID end),
(case when AccountID < PartnerAccountID then PartnerAccountIDelse AccountId end)
);
但是您可以通过将列创建为计算列然后创建索引来完成几乎相同的事情:
alter table t add minid as (case when AccountID < PartnerAccountID then AccountId else PartnerAccountID end);
alter table t add maxid as (case when AccountID < PartnerAccountID then PartnerAccountIDelse AccountId end);
create unique index unq_t_minid_maxid on t(minid, maxid);
关于sql - 当 A & B 已经存在时,防止在 SQL 中输入 B & A,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41175229/
我是一名优秀的程序员,十分优秀!