Saya punya tabel seperti berikut:
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)
);
Dan saya ingin (id_A, id_B, id_C)
tampil beda dalam situasi apa pun. Jadi, dua sisipan berikut harus menghasilkan kesalahan:
INSERT INTO my_table VALUES (1, 1, 2, NULL);
INSERT INTO my_table VALUES (2, 1, 2, NULL);
Tapi itu tidak berperilaku seperti yang diharapkan karena menurut dokumentasi, dua NULL
nilai tidak dibandingkan satu sama lain, sehingga kedua sisipan lulus tanpa kesalahan.
Bagaimana saya bisa menjamin kendala unik saya bahkan jika id_C
bisa NULL
dalam kasus ini? Sebenarnya, pertanyaan sebenarnya adalah: dapatkah saya menjamin keunikan seperti ini di "pure sql" atau apakah saya harus mengimplementasikannya pada level yang lebih tinggi (java dalam kasus saya)?
(1,2,1)
dan(1,2,2)
di(A,B,C)
kolom. Haruskah(1,2,NULL)
diizinkan untuk ditambahkan atau tidak?