ฉันมีตารางดังนี้:
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)
ชัดเจนในทุกสถานการณ์ ดังนั้นส่วนแทรกสองรายการต่อไปนี้ต้องส่งผลให้เกิดข้อผิดพลาด:
INSERT INTO my_table VALUES (1, 1, 2, NULL);
INSERT INTO my_table VALUES (2, 1, 2, NULL);
แต่มันไม่ทำงานตามที่คาดไว้เพราะตามเอกสารประกอบสองNULL
ค่านั้นไม่ได้ถูกนำมาเปรียบเทียบกันดังนั้นเม็ดมีดทั้งสองผ่านโดยไม่มีข้อผิดพลาด
ฉันสามารถรับประกันข้อ จำกัด ที่ไม่ซ้ำกันของฉันแม้ว่าid_C
อาจจะเป็นNULL
ในกรณีนี้หรือไม่? ที่จริงแล้วคำถามจริงคือ: ฉันสามารถรับประกันความเป็นเอกลักษณ์แบบนี้ใน "pure sql" หรือฉันต้องใช้มันในระดับที่สูงขึ้น (java ในกรณีของฉัน)?
(1,2,1)
และ(1,2,2)
ใน(A,B,C)
คอลัมน์ ควร(1,2,NULL)
ได้รับอนุญาตให้เพิ่มหรือไม่?