SQL सर्वर 2005 में Nullable कॉलम पर अद्वितीय अवरोध


12

इस एक परियोजना में, जिस पर मैं काम कर रहा हूं, मुझे विशिष्ट होने के लिए एक विशेष क्षेत्र निर्धारित करने की आवश्यकता है (समस्या नहीं!), लेकिन यदि क्षेत्र शून्य है तो मैं चाहता हूं कि बाधा को नजरअंदाज किया जाए। Sql Server 2008 में मैं नीचे दिखाए गए अनुसार फ़िल्टर किए गए सूचकांक का उपयोग करता हूं लेकिन यह SQL के पुराने संस्करणों में उपलब्ध नहीं है!

CREATE UNIQUE NONCLUSTERED INDEX User_UserName_IUC
ON [User] (pinNr)
WHERE UserName IS NOT NULL

लेकिन मुझे नहीं लगता कि यह SQL Server 2005 में उपलब्ध है। वास्तव में यह ब्लॉग पोस्ट इंगित करता है कि अद्वितीयता की जांच करने के लिए ट्रिगर का उपयोग करके एक वर्कअराउंड है। क्या किसी के पास इसका उदाहरण है? या शायद एक विकल्प?

दुर्भाग्य से SQl सर्वर 2008 के लिए उन्नयन इस विशेष ग्राहक के लिए एक विकल्प नहीं है !!

जवाबों:


18

दरअसल, मुझे एक बार ऐसा कुछ करना था। इसमें एक संगणित स्तंभ बनाना शामिल है जो अद्वितीय स्तंभ का मान लेता है जब वह नहीं है NULLऔर प्राथमिक कुंजी का मूल्य (कुछ अन्य तर्क के साथ अद्वितीय स्तंभ पर मानों के साथ टकराव करना असंभव बनाता है), और अद्वितीय सूचकांक बना रहा है वह कॉलम। आप इसका एक उदाहरण और ट्रिगर विधि यहाँ देख सकते हैं ।


7

आप एक दृश्य बना सकते हैं (जहां यूजरनेम शून्य नहीं है) फिर दृश्य के विरुद्ध एक अद्वितीय सूचकांक डालें। आपको दृश्य का उपयोग करने की आवश्यकता नहीं होगी, यह बस इसके लिए मौजूद होगा।

आप इस तकनीक का उपयोग कई तालिकाओं में अद्वितीयता को लागू करने के लिए भी कर सकते हैं, जहां यह सामान्य रूप से असंभव होगा।


2
अनुक्रमित विचारों को एंटरप्राइज़ संस्करण की आवश्यकता नहीं है। हालाँकि, उन्हें आवश्यकता होती है कि आप मानक संस्करण क्वेरी ऑप्टिमाइज़र को अंतर्निहित क्वेरी के बजाय अनुक्रमित दृश्य का उपयोग करने के लिए बाध्य करने के लिए (NOEXPAND) क्वेरी संकेत का उपयोग करें।
यिर्मयाह पेशाका

3
इस मामले में, हालांकि देखने का एकमात्र बिंदु अद्वितीय बाधा को लागू करना है और यह पूरी तरह से मान्य / सामान्य दृष्टिकोण है।
मार्टिन स्मिथ

2
एंटरप्राइज एडिशन के बारे में गलत जानकारी निकालने की आवश्यकता है।
मेफ

@ यहाँ टिप्पणी का जवाब देने के लिए समय निकालने के लिए धन्यवाद - मुझे आशा है कि आप इस साइट के लिए एक अजनबी नहीं होंगे: आप इन सवालों में दिलचस्पी ले सकते हैं :)
जैक कहते हैं कि
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.