设置唯一或检查约束以使字段在另一个唯一字段的每个条目中唯一

时间:2015-10-22 12:03:56

标签: sql database postgresql

我有一张表格如下:

.-----------------------------.
|    mytable                  |
-------------------------------
| id     | primary key        |
| field  | varchar            | 
| name   | varchar            |
-------------------------------

idfield将是唯一的。但我希望name对每个field也是唯一的。 e.g。

id      | field         | name 
------------------------------------------------------
1       | f1            | n1
2       | f1            | n2
3       | f1            | n1      < Should be voilated
4       | f2            | n1      < Should be fine

1 个答案:

答案 0 :(得分:1)

只需添加唯一索引或约束:

create unique index idx_mytable_name_field on mytable(name, field)

注意:如果列中包含NULL值并且您希望约束也适用于它们,则此解决方案将不起作用。默认情况下,Postgres会忽略NULL个值。