मेरे पास निम्नलिखित की तरह एक तालिका है:
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
, भले ही मैं अपने अद्वितीय बाधा की गारंटी कैसे दे सकता हूं ? वास्तव में, असली सवाल यह है: क्या मैं "शुद्ध एसक्यूएल" में इस तरह की विशिष्टता की गारंटी दे सकता हूं या क्या मुझे इसे उच्च स्तर पर लागू करना होगा (मेरे मामले में जावा)?
(1,2,1)
और(1,2,2)
में(A,B,C)
कॉलम।(1,2,NULL)
जोड़ने की अनुमति दी जानी चाहिए या नहीं?