在 postgres 9.5 中,我有这个 sql 约束:
CONSTRAINT gp_property_name_unique UNIQUE (name, parent_id, active)
这有效,但前提是 parent_id 不为空。如果名称字段是根字段,我如何确保它是唯一的? (=> parent_id 为空)
谢谢。
最佳答案
您可以添加一个唯一索引,例如:
CREATE UNIQUE INDEX gp_property_name_unique_parent
ON your_table(name, active) WHERE parent_id IS NULL;
此索引仅适用于 parent_id
为 null
的行。因为它是唯一的,所以它的工作方式与请求的约束类似。事实上,postgres 中的唯一约束是基于唯一索引的。
关于带 parent 的sql唯一约束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41500154/