sql - 如何从 PostgreSQL 中的 2 列中获取唯一值
问题描述
我有一列"id_a"和一列"id_b"。
“id_a”是一个整数[] 类型。
"id_b"是一个 int 类型。
我得想办法验证没有更多的id_a的值与相同的id_b
For Example:
id_a {3,4,5} id_b 18
其他示例:
ERROR:
id_a{3,4,5} id_b 18 --> because i have already the value of b with the same values of a
NO ERROR:
id_a{3,4,5} id_b 19
ANOTHER ERROR:
id_a{3} id_b 19
NO ERROR:
id_a{6} id_b 18
解决方案
如果安装btree_gist扩展,则可以创建排除约束:
create table data (id_a int[], id_b int);
alter table data
add constraint check_ids
exclude using gist (id_a with &&, id_b with =);
初始行 - 没问题
insert into data (id_a, id_b) values ('{3,4,5}', 18);
再次运行上述代码会产生预期的错误。
以下作品:
insert into data (id_a, id_b) values ('{3,4,5}', 19);
接着:
insert into data (id_a, id_b) values ('{3}', 19);
将导致错误
错误:冲突的键值违反了排除约束“check_ids”
推荐阅读
- angular - 在移动设备上调试 Angular 应用程序时出现地理位置 API 错误
- json - 如何将两个不同的jq语句的行编织在一起
- azure-application-insights - 在应用程序洞察力中用作会话 ID 的内容
- conv-neural-network - 计算给定输入大小的过滤器的数量和大小
- kubernetes - 服务和节点端口的 k8s 1.10 和 1.13 之间有什么区别吗
- python - 如何检索不是由用户创建的对象?
- python - 读取 csv 文件时如何修复非法换行值
- api - 如何获取 Paypal API V2 的交易 ID
- javascript - 将变量传递给 phalcon 的 volt 模板中的函数
- git - 无法推送新的远程存储库