मैंने यह अपने करियर में कुछ बार देखा है, और मेरे स्थानीय सहयोगियों में से कोई भी इसका उत्तर देने में सक्षम नहीं है। मान लें कि मेरे पास एक सारणी है जिसमें "विवरण" फ़ील्ड है जो एक उम्मीदवार कुंजी है, सिवाय इसके कि कभी-कभी उपयोगकर्ता प्रक्रिया के माध्यम से आधा रास्ते बंद कर देगा। तो शायद 25% रिकॉर्ड्स के लिए यह मान शून्य है, लेकिन उन सभी के लिए जो पूर्ण नहीं हैं, यह अद्वितीय होना चाहिए।एसक्यूएल क्या मेरे पास एक टेबल पर "सशर्त रूप से अद्वितीय" बाधा हो सकती है?
एक और उदाहरण एक तालिका हो सकती है जो रिकॉर्ड के कई "संस्करण" को बनाए रखना चाहिए, और थोड़ा मान इंगित करता है कि कौन सा "सक्रिय" है। तो "उम्मीदवार कुंजी" हमेशा पॉप्युलेट होती है, लेकिन तीन संस्करण हो सकते हैं जो समान हैं (सक्रिय बिट में 0 के साथ) और केवल एक जो सक्रिय है (सक्रिय बिट में 1)।
मेरे पास इन समस्याओं को हल करने के लिए वैकल्पिक तरीके हैं (पहले मामले में, नियम कोड को लागू करें, या तो संग्रहीत प्रक्रिया या व्यावसायिक परत में, और दूसरे में, एक ट्रिगर के साथ एक संग्रह तालिका को पॉप्युलेट करें और तालिकाओं को यूनियन करें इतिहास की आवश्यकता है)। मैं विकल्पों को नहीं चाहता (जब तक कि बेहतर तरीके से बेहतर समाधान न हों), मैं बस सोच रहा हूं कि एसक्यूएल का कोई स्वाद इस तरह से "सशर्त विशिष्टता" व्यक्त कर सकता है। मैं एमएस एसक्यूएल का उपयोग कर रहा हूं, इसलिए यदि इसमें ऐसा करने का कोई तरीका है, तो बढ़िया। मैं ज्यादातर समस्या में अकादमिक रूप से रुचि रखते हैं।
संभावित डुप्लिकेट: http://stackoverflow.com/questions/866061/conditional-unique-constraint –
एसक्यूएल सर्वर के किन संस्करणों? – gbn
सिलिको में सूचक के लिए धन्यवाद। यह निश्चित रूप से स्थिति 2 पर लागू होता है। मैंने पोस्ट करने से पहले खोज की थी, लेकिन वास्तव में मैंने उन खोजशब्दों पर खोज नहीं की जिन्हें मैंने अंततः शीर्षक में उपयोग किया था या मुझे यह मिल गया होगा! आपके द्वारा पोस्ट किया गया लिंक काफी पता स्थिति # 1 नहीं है, जिसे 2005 में टॉम एच के सुझाव और 2008 में आर्थर के साथ हल किया गया है। जीबीएन: मैं 2005 का उपयोग कर रहा हूं, यही कारण है कि मुझे इंडेक्स के बारे में पता नहीं था 2008 में फ़िल्टर। –