मैं अपने कॉलम (SQL Server 2008 R2) पर एक अद्वितीय बाधा कैसे बना सकता हूं?


108

मेरे पास SQL ​​Server 2008 R2 है और मैं एक अद्वितीय कॉलम सेट करना चाहता हूं।

ऐसा करने के दो तरीके प्रतीत होते हैं: "अद्वितीय सूचकांक" और "अद्वितीय बाधा"। वे जो मैं समझते हैं, उससे बहुत अलग नहीं हैं, हालांकि अद्वितीय बाधा की सिफारिश सबसे अधिक है, क्योंकि आपको स्वचालित रूप से एक सूचकांक भी मिलता है।

मैं एक अद्वितीय बाधा कैसे बनाऊं?

ALTER TABLE Customer ADD CONSTRAINT U_Name UNIQUE(Name)

वहाँ SQL सर्वर प्रबंधन स्टूडियो के माध्यम से एक अद्वितीय बाधा बनाने के लिए एक रास्ता है?

जवाबों:


59

जीयूआई के माध्यम से इन बाधाओं को बनाने के लिए आपको "अनुक्रमित और चाबियाँ" संवाद की आवश्यकता है न कि चेक की कमी।

लेकिन आपके मामले में आपको केवल आपके पास पहले से मौजूद कोड का टुकड़ा चलाना होगा। इसे बिल्कुल अभिव्यक्ति संवाद में दर्ज करने की आवश्यकता नहीं है।


तो मैं इसे एक क्वेरी में चला सकता हूं? जब मैंने कोशिश की, तो यह सफलतापूर्वक चला, लेकिन क्या मैं इसे देखने के लिए कहीं भी जा सकता हूं (यानी सेटिंग बदल गई थी)?
व्हाइट आइलैंड

@WhiteIsland - यदि आप तालिका का विस्तार करते हैं और "कीज़" के नीचे देखते हैं तो आपको इसे SSMS ऑब्जेक्ट एक्सप्लोरर में देखना चाहिए
मार्टिन स्मिथ

126

GUI से SQL सर्वर में अद्वितीय स्तंभ सेट करें:

वे वास्तव में आपको GUI के साथ करने के लिए खलिहान के चारों ओर दौड़ते हैं:

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

  1. SQL सर्वर प्रबंधन स्टूडियो खोलें।
  2. अपनी तालिका पर राइट क्लिक करें, "डिज़ाइन" पर क्लिक करें।
  3. उस कॉलम पर राइट क्लिक करें जिसे आप संपादित करना चाहते हैं, एक पॉपअप मेनू दिखाई देता है, इंडेक्स / कुंजी पर क्लिक करें।
  4. "जोड़ें" बटन पर क्लिक करें।
  5. "सामान्य" टैब का विस्तार करें।
  6. सुनिश्चित करें कि आपके पास वह कॉलम है जिसे आप "कॉलम" बॉक्स में अद्वितीय चयनित बनाना चाहते हैं।
  7. "टाइप" बॉक्स को "यूनीक की" में बदलें।
  8. "बंद करें" पर क्लिक करें।
  9. आपको फ़ाइल विंडो में थोड़ा सा तारांकन दिखाई देता है, इसका अर्थ है कि परिवर्तन अभी तक सहेजे नहीं गए हैं।
  10. Ctrl + s सहेजें या दबाएं। इसे सहेजना चाहिए, और आपका कॉलम अद्वितीय होना चाहिए।

या SQL क्वेरी विंडो से अद्वितीय रूप में स्तंभ सेट करें:

alter table location_key drop constraint pinky;
alter table your_table add constraint pinky unique(yourcolumn);

परिवर्तन तुरंत प्रभावी होते हैं:

Command(s) completed successfully.

महान। इसके अलावा आप इस तरह TSQL स्क्रिप्ट में कई कॉलम जोड़ सकते हैं: परिवर्तन तालिका your_table जोड़ बाधा गुलाबी अद्वितीय (yourcolumn, yourcolumn_2);
जॉर्डन

15

यहाँ GUI के माध्यम से एक और तरीका है जो आपकी स्क्रिप्ट को ठीक करता है, भले ही वह ऑब्जेक्ट एक्सप्लोरर में Indexes (कॉन्स्ट्रेन्ट्स) से होकर जाता हो।

  1. "इंडेक्स" पर राइट क्लिक करें और "न्यू इंडेक्स ..." पर क्लिक करें (ध्यान दें: यह अक्षम है यदि आपके पास डिज़ाइन दृश्य में तालिका खुली है)

यहां छवि विवरण दर्ज करें

  1. नए इंडेक्स को एक नाम ("U_Name") दें, "यूनिक" चेक करें, और "Add ..." पर क्लिक करें।

यहां छवि विवरण दर्ज करें

  1. अगले विंडाउन में "नाम" कॉलम चुनें

यहां छवि विवरण दर्ज करें

  1. दोनों विंडो में ओके पर क्लिक करें

1
SSMS 2014 में, नया इंडेक्स बनाने के लिए राइट-क्लिक संदर्भ मेनू विकल्प उपरोक्त स्क्रीन कैप्चर से थोड़ा अलग है। न्यू इंडेक्स पर क्लिक करते समय, आपको तब (क्लस्टर्ड इंडेक्स, नॉन-क्लस्टर्ड इंडेक्स, प्राइमरी एक्सएमएल इंडेक्स, सेकेंडरी एक्सएमएल इंडेक्स, स्पैटियल इंडेक्स, नॉन-क्लस्टर्ड कॉलममीस्टोर इंडेक्स, और क्लस्टर्ड कॉलमइनस्टोर इंडेक्स) की सूची से चयन करना होगा। आमतौर पर, आप गैर-संकुल सूचकांक का चयन करेंगे।
आईकोड

8

स्पष्ट रूप से कवर नहीं की गई एक बात यह है कि Microsoft sql पृष्ठभूमि में अतिरिक्त अवरोध के लिए एक अद्वितीय सूचकांक बना रहा है

create table Customer ( id int primary key identity (1,1) , name nvarchar(128) ) 

--Commands completed successfully.

sp_help Customer

---> index
--index_name    index_description   index_keys
--PK__Customer__3213E83FCC4A1DFA    clustered, unique, primary key located on PRIMARY   id

---> constraint
--constraint_type   constraint_name delete_action   update_action   status_enabled  status_for_replication  constraint_keys
--PRIMARY KEY (clustered)   PK__Customer__3213E83FCC4A1DFA  (n/a)   (n/a)   (n/a)   (n/a)   id


---- now adding the unique constraint

ALTER TABLE Customer ADD CONSTRAINT U_Name UNIQUE(Name)

-- Commands completed successfully.

sp_help Customer

---> index
---index_name   index_description   index_keys
---PK__Customer__3213E83FCC4A1DFA   clustered, unique, primary key located on PRIMARY   id
---U_Name   nonclustered, unique, unique key located on PRIMARY name

---> constraint
---constraint_type  constraint_name delete_action   update_action   status_enabled  status_for_replication  constraint_keys
---PRIMARY KEY (clustered)  PK__Customer__3213E83FCC4A1DFA  (n/a)   (n/a)   (n/a)   (n/a)   id
---UNIQUE (non-clustered)   U_Name  (n/a)   (n/a)   (n/a)   (n/a)   name

जैसा कि आप देख सकते हैं, एक नया अवरोध और एक नया सूचकांक U_Name है

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.