Aşağıdaki gibi bir tablo var:
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)
);
Ve (id_A, id_B, id_C)
her durumda farklı olmak istiyorum . Bu nedenle, aşağıdaki iki ek bir hatayla sonuçlanmalıdır:
INSERT INTO my_table VALUES (1, 1, 2, NULL);
INSERT INTO my_table VALUES (2, 1, 2, NULL);
Ancak, beklendiği gibi davranmaz, çünkü belgelere göre, iki NULL
değer birbiriyle karşılaştırılmaz, bu nedenle her iki uç da hatasız geçer.
Bu durumda olsa bile id_C
, benzersiz kısıtlamamı nasıl garanti edebilirim NULL
? Aslında asıl soru şudur: "saf sql" de bu tür benzersizliği garanti edebilir miyim veya daha yüksek bir düzeyde uygulamak zorunda mıyım (benim durumumda java)?
(1,2,1)
ve(1,2,2)
içinde(A,B,C)
sütunlar. Eklenmeye(1,2,NULL)
izin verilmeli mi veya edilmemeli mi?