如何解决非唯一约束
所以,我遇到了这种情况:
我创建了一个表(假设为model_a
),在该表中,我有2个列(假设为col1
和col2
)。
我需要一个满足这一现实的约束条件:
model_a
col1 | col2
-----+-----
1 | 1 //first row
2 | 1 >> ok
1 | 1 >> ok
1 | 2 >> can not insert this row
这不是唯一约束,您可以复制第一行。
此约束活动唯一一次是col1
是相同的,但col2
是不同的。
需要帮助:微笑:非常感谢!
解决方法
我正在考虑两个列的最小/最大值的唯一索引,该索引仅适用于值不相等的行:
create unique index myidx
on model_a (least(col1,col2),greatest(col1,col2))
where (col1 <> col2)
insert into model_a (col1,col2) values (1,1); -- ok
insert into model_a (col1,col2) values (2,1); -- ok
insert into model_a (col1,2);
-- ERROR: duplicate key value violates unique constraint "myidx"
-- DETAIL: Key (LEAST(col1,GREATEST(col1,col2))=(1,2) already exists.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。