2011-04-08 13 views
6

मैं दो कॉलम के साथ एक SQL तालिका रखना चाहता हूं। एक दूसरी मेज में एक कुंजी है, दूसरे एक स्ट्रिंग अक्षरशः रखती है। विचार यह है कि फ़ोन नंबरों को या तो ठीक से दर्ज किया जा सकता है (जिस स्थिति में फोनबुक टेबल में आईडी का उपयोग किया जाता है) या वाइल्डकार्ड के रूप में (जिसमें स्ट्रिंग अक्षर का उपयोग किया जाता है)।MySQL: कम से कम एक कॉलम को सेट करना न्यूल

इसका मतलब है कि तालिका में एक कॉलम एक मान रखेगा, और दूसरा एक पूर्ण होगा।

क्या एक तालिका को इस तरह से बाध्य करना संभव है कि एक कॉलम का मूल्य होना चाहिए, और दूसरा नल होना चाहिए? यदि दोनों कॉलम न्यूल हैं या दोनों के पास कोई मान है, तो पंक्ति अमान्य है।

मुझे एहसास है कि MySQL ऐसा नहीं कर सकता है (क्योंकि यह बाधाओं के समय एक व्यापक टूलबॉक्स प्रतीत नहीं होता है), लेकिन यह पूछने में कोई दिक्कत नहीं हो सका।

+0

इससे मदद मिल सकती है (बिल्कुल * बिल्कुल * नहीं): http://stackoverflow.com/questions/4523351/mysql-constraint-two- कॉलम-एक-उनमें-हमेशा-शून्य-शून्य – WhyNotHugo

उत्तर

4

मुझे इस तरह की बाधा को लागू करने के तरीके से अवगत नहीं है।

कामकाज के रूप में, आप दो अलग-अलग कॉलम मान सकते हैं: यदि आपके पास डेटा के लिए एक कॉलम है - जिसमें फोनबुक आईडी या स्ट्रिंग शाब्दिक है, और डेटा प्रकार के लिए एक और कॉलम - या तो 'सटीक' या 'वाइल्डकार्ड '-, आप दोनों स्तंभों में एक पूर्ण निरंतर बाधा सेट कर सकते हैं। एक स्पष्ट कमी यह है कि आपके पास फोनबुक टेबल पर एफके बाधा नहीं हो सकती है।

+0

मैं इसे स्वीकार करने जा रहा हूं, लेकिन वास्तविक डिजाइन जो मैंने किया था वह कुछ अलग है। मैंने इसके बजाय एक ऐसा क्षेत्र जोड़ा जो कि सटीक या वाइल्डकार्ड हो सकता है, और कुंजी फ़ील्ड की सामग्री किसी भी प्रकार की फोन के मूल्य के आधार पर फोनबुक या एक नई वाइल्डकार्ड तालिका को इंगित करेगी। प्रकार और कुंजी एक समग्र अनूठी कुंजी है, इसलिए कुंजी में एक ही मूल्य दो बार हो सकता है (एक बार फ़ोन बुक की कुंजी के लिए, और एक बार वाइल्डकार्ड की कुंजी के लिए)। – GordonM

2

आप मूल्यों की जांच करने के लिए ट्रिगर्स को चलाने के लिए ट्रिगर कर सकते हैं और यह निर्धारित कर सकते हैं कि सम्मिलन या अद्यतन होना चाहिए या नहीं। इस तरह ट्रिगर्स बनाने के लिए एक अच्छा उदाहरण यहां पाया जा सकता है: https://dba.stackexchange.com/questions/43284/two-nullable-columns-one-required-to-have-value

संबंधित मुद्दे