SQL सर्वर 2005 एक अद्वितीय बाधा कैसे बनाएँ?


181

मैं SQL Server 2005 में मौजूदा तालिका पर एक अद्वितीय बाधा कैसे बना सकता हूं?

मैं TSQL दोनों की तलाश कर रहा हूं और इसे डेटाबेस आरेख में कैसे करना है।

जवाबों:


272

SQL कमांड है:

ALTER TABLE <tablename> ADD CONSTRAINT
            <constraintname> UNIQUE NONCLUSTERED
    (
                <columnname>
    )

यहां पूरा सिंटैक्स देखें ।

यदि आप इसे डेटाबेस आरेख से करना चाहते हैं:

  • तालिका पर राइट-क्लिक करें और 'अनुक्रमित / कुंजी' चुनें
  • नया इंडेक्स जोड़ने के लिए Add बटन पर क्लिक करें
  • दायीं ओर के गुणों में आवश्यक जानकारी दर्ज करें:
    • इच्छित कॉलम (चयन करने के लिए दीर्घवृत्त बटन पर क्लिक करें)
    • सेट इज़ यूनिक टू यस
    • इसे एक उपयुक्त नाम दें

1
यह काम करता है ... लेकिन ... क्यों बाधा को CONSTRAINTS फ़ोल्डर के बजाय INDEX फ़ोल्डर में दिखाया गया है। यह एक अन्य आइकन के साथ दिखाया गया है, लेकिन वैसे भी यह बाधा फ़ोल्डर में होना चाहिए।
फर्नांडो टोरेस

84

SQL सर्वर प्रबंधन स्टूडियो एक्सप्रेस में:

  • तालिका पर राइट-क्लिक करें, संशोधित करें या डिज़ाइन चुनें (बाद के संस्करणों के लिए)
  • फ़ील्ड पर राइट-क्लिक करें, अनुक्रमित / कुंजी चुनें ...
  • जोड़ें पर क्लिक करें
  • के लिए कॉलम , चयन फ़ील्ड नाम आप अद्वितीय होना चाहता हूँ।
  • के लिए प्रकार , चुनें अनोखा कुंजी
  • बंद करें क्लिक करें , तालिका सहेजें


15

चेतावनी: आपके द्वारा निर्धारित कॉलम में केवल एक शून्य पंक्ति अद्वितीय हो सकती है।

आप इसे SQL 2008 में फ़िल्टर किए गए अनुक्रमणिका के साथ कर सकते हैं:

CREATE UNIQUE NONCLUSTERED INDEX idx_col1
ON dbo.MyTable(col1)
WHERE col1 IS NOT NULL;

फ़ील्ड मान देखें जब तक कि यह उत्तर की एक सीमा के लिए पूर्ण न हो, तब तक अद्वितीय होना चाहिए


2005 के sql सर्वर में आप यह कैसे करते हैं?
मैक्सनर

2
यह sql सर्वर 2005 में प्राप्त करने योग्य नहीं है। मैं दृढ़ता से अधिक अप-टू-डेट आरडीबीएमएस को अपग्रेड करने की सिफारिश करूंगा - यह आधिकारिक तौर पर 12 अप्रैल 2016 तक असमर्थित हो जाएगा ।
रीडस्टोनफूड


10

मैंने यह भी पाया कि आप ऐसा कर सकते हैं, डेटाबेस आरेख।

तालिका को राइट क्लिक करके और अनुक्रमणिका / कुंजी का चयन करके ...

'जोड़ें' बटन पर क्लिक करें, और कॉलम को उस कॉलम में बदल दें जो आप चाहते हैं कि यह अनूठा हो।

चेंज इज यूनिक टू यस।

आरेख पर क्लिक करें और आरेख को सहेजें, और यह इसे तालिका में जोड़ देगा।


8

आप निम्नलिखित की तरह कुछ की तलाश कर रहे हैं

ALTER TABLE dbo.doc_exz
ADD CONSTRAINT col_b_def
UNIQUE column_b

MSDN डॉक्स


6

तालिका के पहले से ही निर्मित होने पर एक या कई स्तंभों पर एक UNIQUE बाधा बनाने के लिए, निम्न SQL का उपयोग करें:

ALTER TABLE TableName ADd UNIQUE (ColumnName1,ColumnName2, ColumnName3, ...)

उपरोक्त क्वेरी के लिए एक UNIQUE बाधा के नामकरण की अनुमति देने के लिए

ALTER TABLE TableName ADD CONSTRAINT un_constaint_name UNIQUE (ColumnName1,ColumnName2, ColumnName3, ...)

MySQL / SQL Server / Oracle / MS Access द्वारा समर्थित क्वेरी।


UNIQUE NONCLUSTERED और विकल्प PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON ?
किकेनेट

5

प्रबंधन स्टूडियो आरेख में तालिका चुनें, नया कॉलम जोड़ने के लिए राइट क्लिक करें यदि वांछित हो, तो कॉलम पर राइट-क्लिक करें और "चेक बाधाओं" का चयन करें, वहां आप एक जोड़ सकते हैं।


0

कुछ स्थितियों में, यह सुनिश्चित करने के लिए वांछनीय हो सकता है कि इसे बनाने से पहले अनन्य कुंजी मौजूद नहीं है। ऐसे मामलों में, नीचे दी गई स्क्रिप्ट मदद कर सकती है:

IF Exists(SELECT * FROM sys.indexes WHERE name Like '<index_name>')
    ALTER TABLE dbo.<target_table_name> DROP CONSTRAINT <index_name> 
GO

ALTER TABLE dbo.<target_table_name> ADD CONSTRAINT <index_name> UNIQUE NONCLUSTERED (<col_1>, <col_2>, ..., <col_n>) 
GO
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.