嗯。唯一約束不會阻止多個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)
);
請注意,我們可以插入muliple空值到它,甚至當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"
當然,你確實有一個問題:你的表沒有主鍵。你 可能有一個數據模型問題。但你沒有提供足夠的 細節來解決這個問題。
數據模型問題不是我的,它的客戶:)!謝謝。 – 2009-03-03 20:05:44