Мммм. Уникальные ограничения не предотвращают множественные значения 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"
Конечно, у вас есть проблема: у вашей таблицы нет первичного ключа. Вы
вероятно, есть проблема с моделью данных. Но вы не предоставили достаточно
детали, чтобы это исправить.