与父母的sql唯一约束

时间:2017-01-06 06:26:21

标签: sql postgresql

在postgres 9.5中,我有这个sql约束:

CONSTRAINT gp_property_name_unique UNIQUE (name, parent_id, active)

这只有在parent_id不为null时才有效。如果名称字段是根字段,我如何确保名称字段是唯一的? (=> parent_id为空)

感谢。

1 个答案:

答案 0 :(得分:0)

您可以添加一个唯一的索引,如:

CREATE UNIQUE INDEX gp_property_name_unique_parent 
ON your_table(name, active) WHERE parent_id IS NULL;

此索引仅适用于parent_idnull的行。由于它是唯一的,它的作用就像请求的约束。实际上,postgres中的唯一约束基于唯一索引。