postgresql – Postgres唯一约束不强制唯一性
发布时间:2020-12-13 16:07:05 所属栏目:百科 来源:网络整理
导读:这是我的约束: CREATE UNIQUE INDEX index_subscriptions_on_user_id_and_class_type_id_and_deleted_at ON subscriptions USING btree (user_id,class_type_id,deleted_at); 此查询证明约束实际上不起作用: SELECT id,user_id,deleted_atFROM subscriptio
这是我的约束:
CREATE UNIQUE INDEX index_subscriptions_on_user_id_and_class_type_id_and_deleted_at ON subscriptions USING btree (user_id,class_type_id,deleted_at); 此查询证明约束实际上不起作用: SELECT id,user_id,deleted_at FROM subscriptions; 这是输出: 为什么没有强制执行唯一性? 解决方法
Postgres中的唯一索引基于值相等,但NULL永远不会等于任何值,包括其他NULL.因此,任何具有NULL deleted_at值的行都与任何其他可能的行不同 – 因此您可以插入任意数量的行.
解决此问题的一种方法是创建部分索引,对包含和不包含NULL的行应用不同的规则: CREATE UNIQUE INDEX ... ON subscriptions (user_id,class_type_id) WHERE deleted_at IS NULL; CREATE UNIQUE INDEX ... ON subscriptions (user_id,deleted_at) WHERE deleted_at IS NOT NULL; (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- c# – 当TabControl的ItemsSource绑定到WPF中的列表时,如何
- c# – 如何对使用OWIN Cookie Authenthication的代码进行单
- OOA / OOD 的理解
- 深入认识Oracle Supplemental logging
- cocos2d3.1 android eclipse 环境搭建
- c# – 它是一个代码气味来注入一个依赖关系并将其成员设置为
- ruby-on-rails – 在s3上使用redirect_to文件时.如何显示图
- JsonReader JSONObject 区别
- Ajax数据格式摘要
- ruby-on-rails-3 – 为简单表单添加复选框,不在模型中输入