2014-09-29 10 views
5

मेरे पास दो संख्यात्मक कॉलम के साथ SQL सर्वर में एक तालिका है। इन संख्यात्मक क्षेत्रों में से कम से कम एक भरा जाना चाहिए। यह सत्यापित करने के लिए मैं चेक बाधा कैसे लिखूं?मुझे दो कॉलम पर एक चेक बाधा की आवश्यकता है, कम से कम एक शून्य नहीं होना चाहिए

+1

संभावित डुप्लिकेट [दो कॉलम के बीच कॉलम में से एक पूरा नहीं हो सकता है। स्कीमा में इसे कैसे लागू करें?] (Http://stackoverflow.com/questions/7017871/one-of-the-column-between-two-columns-should-be-not-null-how-to-enforce-it -इन-एस) – JohnnyHK

+0

@ जॉनीनीएचके डुप्लिकेट नहीं है क्योंकि यह प्रश्न 'कम से कम दो में से एक' के बारे में है और वह 'केवल दो में से एक' है – nahab

उत्तर

12

यह एक चेक बाधा है कि शून्य मान पुष्टि करता है और या साथ परिणाम

create table #t (i int 
       , j int 
       , constraint chk_null check (i is not null or j is not null)) 

निम्नलिखित परीक्षण मामलों

insert into #t values (null, null) --> error 
insert into #t values (1, null) --> ok 
insert into #t values (null, 1) --> ok 
insert into #t values (1, 1) --> ok 
0

देर जवाब कर रहे हैं से मेल खाता है के साथ किया जा सकता है, लेकिन यहाँ एक समाधान है एसक्यूएल सर्वर के लिए कॉलम की किसी भी संख्या के लिए जांचने के लिए:

CONSTRAINT CK_one_is_not_null CHECK (COALESCE(col1, col2, col3) IS NOT NULL) 
संबंधित मुद्दे