次のような表があります。
create table my_table (
id int8 not null,
id_A int8 not null,
id_B int8 not null,
id_C int8 null,
constraint pk_my_table primary key (id),
constraint u_constrainte unique (id_A, id_B, id_C)
);
そして、私(id_A, id_B, id_C)
はどんな状況でも明確になりたいです。したがって、次の2つの挿入はエラーになる必要があります。
INSERT INTO my_table VALUES (1, 1, 2, NULL);
INSERT INTO my_table VALUES (2, 1, 2, NULL);
しかし、ドキュメントによると、2つのNULL
値は互いに比較されないため、期待どおりに動作しません。そのため、両方の挿入はエラーなしでパスします。
この場合でも、一意の制約をどのように保証id_C
できますNULL
か?実際、本当の問題は、「pure sql」でこのような一意性を保証できますか、それともより高いレベル(私の場合はjava)で実装する必要がありますか?
(1,2,1)
と、(1,2,2)
中(A,B,C)
の列。を(1,2,NULL)
追加することを許可する必要がありますか?