嗯。唯一约束不会阻止多个 NULL 值。
CREATE TABLE mytable (
table_identifier_a INTEGER NULL,
table_identifier_b INTEGER NOT NULL,
table_value1 INTEGER NOT NULL,
UNIQUE(table_identifier_a, table_identifier_b)
);
请注意,我们可以在其中插入多个 NULL,即使 identifier_b 匹配:
test=# INSERT INTO mytable values(NULL, 1, 2);
INSERT 0 1
test=# INSERT INTO mytable values(NULL, 1, 2);
INSERT 0 1
test=# select * from mytable;
table_identifier_a | table_identifier_b | table_value1
--------------------+--------------------+--------------
| 1 | 2
| 1 | 2
(2 rows)
但是我们不能创建重复的 (a,b) 对:
test=# update mytable set table_identifier_a = 3;
ERROR: duplicate key value violates unique constraint "mytable_table_identifier_a_key"
当然,您确实有一个问题:您的表没有主键。您可能有数据模型问题。但是你没有提供足够的细节来解决这个问题。