Tôi có một bảng như sau:
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)
);
Và tôi muốn (id_A, id_B, id_C)
khác biệt trong mọi tình huống. Vì vậy, hai chèn sau đây phải dẫn đến một lỗi:
INSERT INTO my_table VALUES (1, 1, 2, NULL);
INSERT INTO my_table VALUES (2, 1, 2, NULL);
Nhưng nó không hoạt động như mong đợi vì theo tài liệu, hai NULL
giá trị không được so sánh với nhau, vì vậy cả hai lần chèn đều không có lỗi.
Làm thế nào tôi có thể đảm bảo ràng buộc duy nhất của mình ngay cả khi id_C
có thể NULL
trong trường hợp này? Trên thực tế, câu hỏi thực sự là: tôi có thể đảm bảo loại duy nhất này trong "sql thuần" hay tôi phải thực hiện nó ở cấp độ cao hơn (java trong trường hợp của tôi)?
(1,2,1)
và(1,2,2)
trong các(A,B,C)
cột. Có nên(1,2,NULL)
cho phép thêm hay không?