有一个名为 People
的表,列 address_id (int)
和 is_deleted (boolean)
,
如何添加唯一约束以允许唯一的 address_id
+ false
,并允许多个 address_id
+ true
。
例如
address_id | is_deleted
-----------------------
1 | false
2 | true
2 | true
2 | true
谢谢!
最佳答案
how can I add a unique constraint to allow unique address_id + false, and allow multiple address_id + true
无法使用 CHECK,因为这在并发插入或更新的情况下不起作用。
您可以使用条件唯一索引:
CREATE UNIQUE INDEX people_addr_id_is_deleted_unique
ON People (address_id) WHERE (NOT is_deleted);
此唯一索引将仅包含满足指定 WHERE 条件的行。根据匹配行的百分比,这可能会节省一点存储空间,或者相对于完整索引来说会节省很多。此外,对未包含在条件索引中的行的更新不必花费时间更新索引。
Further reading 。还可以谷歌“postgresql 条件唯一约束”。
关于sql - 在Postgresql中,对2列添加唯一约束,不等于特定值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59571709/