2010-02-01 13 views
31

SQL सर्वर 2005 में दो स्तंभों में आप एक अद्वितीय बाधा कैसे जोड़ते हैं? तो कहते हैं कि सुविधा देता है कि मेरे पास है:SQL सर्वर 2005 दो कॉलम पर अद्वितीय बाधा

PK, A, B ... 
x1 1 1 
x2 1 2 
x3 2 1 
x4 2 2 

मैं एक और पंक्ति 'x5' जोड़ने के लिए सक्षम नहीं होना चाहिए और ए और बी के लिए मान होना 1,1 के रूप में वे x1 में डेटाबेस में पहले से ही कर रहे हैं?

ठीक है हम इसे काम करने और ओएमजी के लिए धन्यवाद करने में कामयाब रहे। तालिका दृश्य पर जाएं, दो कॉलम का चयन करें, राइट क्लिक करें और 'इंडेक्स/चाबियाँ' चुनें - सामान्य टैब, उन स्तंभों का चयन करें जिन्हें आप अद्वितीय होना चाहते हैं और फिर सत्य के लिए 'अद्वितीय' सेट करें। यह टेबल डिजाइनर का उपयोग कर रहा है।

धन्यवाद।

+0

डुप्लिकेट: http://stackoverflow.com/questions/2152176/unique-way-to-have-unique-rows-in-table –

+0

क्या आपने देखा है ? – Rafael

उत्तर

35

SQL सर्वर में, एक अद्वितीय बाधा वास्तव में एक अद्वितीय अनुक्रमणिका के रूप में लागू की जाती है। उपयोग करें:

CREATE UNIQUE INDEX <uix_name> ON <table_name>(<col_A>, <col_B>) 

अधिक जानकारी के लिए, this MSDN page देखें।

+0

हाँ, हमने इसे टेबल डिजाइनर के माध्यम से प्रबंधित किया और यह काम किया, ठंडा। – flavour404

+0

मैं @adaTheDev से सहमत हूं और एक अद्वितीय इंडेक्स "कच्चा" जोड़ने के बजाय तालिका की बाधा जोड़ता हूं। इंडेक्स बनाना संभव प्रदर्शन सुधार का तात्पर्य है। लेकिन फिर यह समझने से पहले कि यह प्रदर्शन के लिए नहीं बल्कि कार्यक्षमता के लिए है, इस सूचकांक को छोड़ सकता है। आप यह महसूस किए बिना किसी बाधा को कभी नहीं छोड़ेंगे कि अधिकांश कुछ कार्यात्मक उद्देश्य की सेवा कर रहे हैं। (स्वीकार्य रूप से एक अनूठी बाधा एक अनूठी इंडेक्स अंत बनाती है लेकिन इसे सीधे बाधा छोड़ने के माध्यम से नहीं छोड़ा जा सकता है) –

+0

@ राल्फ शिलिंगटन: एक अद्वितीय इंडेक्स में कॉलम भी शामिल हो सकते हैं। एक बाधा नहीं कर सकते हैं। अधिक जानकारी के लिए: http://stackoverflow.com/questions/2152176/unique-way-to-have-unique-rows-in-table –

37
ALTER TABLE YourTable 
ADD CONSTRAINT UQ_YourTable_ConstraintName UNIQUE(A, B) 
+0

बाधा बॉक्स में जाने वाला वाक्यविन्यास क्या है। हम दो स्तंभों को हाइलाइट करते हैं, 'बाधाओं' पर राइट क्लिक करें और 'अनन्य (डॉकटाइप, पबआईडी)' में डाल दें और यह एक त्रुटि है - 'त्रुटि को बाधित करने में त्रुटि' – flavour404

+1

टेबल डिज़ाइनर में जाने से भी आसान/तेज - बस एसएसएमएस में एक नया क्वेरी टैब खोलें और एसक्यूएल चलाएं। – AdaTheDev

+0

+1 - जीत के लिए अद्वितीय बाधा, यह किसी ऐसे व्यक्ति को बताती है जो भविष्य में सिस्टम में एक अद्वितीय इंडेक्स से अधिक है। –