[英]Setting constraint for two unique fields in PostgreSQL
我是Postgres的新手。 我想知道,PostgreSQL如何为几个唯一值设置约束(以便每个对都是唯一的)。 我应该为bar
和baz
字段创建INDEX
吗?
CREATE UNIQUE INDEX foo ON table_name(bar, baz);
如果没有,那么正确的方法是什么? 提前致谢。
您可以执行已经在想的事情: 在两个字段上创建唯一约束 。 这样,将在幕后创建唯一索引 ,您将获得所需的行为。 另外,该信息可以由information_schema
提取,以根据需要进行元数据推断,因为两者都必须是唯一的。 我会推荐这个选项。 您也可以为此使用触发器,但是对于此特定要求, 唯一约束会更好。
如果每个字段本身都需要唯一,则在每个字段上创建唯一索引。 如果它们仅需要在组合中唯一,则可以在两个字段之间创建一个唯一索引。
如果需要,请不要忘记将每个字段设置为“非空”。 NULL永远都不是唯一的,因此可能会发生以下情况:
create table test (a int, b int);
create unique index test_a_b_unq on test (a,b);
insert into test values (NULL,1);
insert into test values (NULL,1);
并没有错误。 因为两个NULL不是唯一的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.