2011-02-11 13 views
13
EmpID DeptID 

1  1 
1  2 
2  1 
3  2 
4  5 
5  2 
1  1 
2  1 

मैं एक बाधा यह सुनिश्चित करें कि क्षेत्र की जोड़ी हमेशा अद्वितीय है कर देगा कि करना चाहते हैं, उदाहरण में दिखाया गया पिछले दो के रूप में इस तरह के डेटा नहीं डालने करने योग्य होना चाहिए में तालिका। उपर्युक्त तालिका कृपया ध्यान दें कि पिछले दो पंक्तियां डुप्लिकेट हैं, मैं ऐसे डेटा को होने से रोकना चाहता हूं। मैं sqlserver में 2005.Thanksकैसे एकाधिक स्तंभ पर अद्वितीय contraint जगह

उत्तर

13
ALTER TABLE <YourTable, sysname, Emp> 
ADD CONSTRAINT <YourConstraintName, sysname, uix> 
UNIQUE NONCLUSTERED (EmpID,DeptID) 

(SSMS में पेस्ट करें और उपयोग करें (Ctrl + + M) शिफ्ट) या तालिका बनाने पर यह करने के लिए और यह लग रहा है के रूप में के रूप में यद्यपि कोई विकल्प कुंजी उपयोग।

CREATE TABLE EMPLOYEE_DEPARTMENT(
    EmpID int NOT NULL REFERENCES EMPLOYEE(EmpID), 
    DeptID int NOT NULL REFERENCES DEPARTMENT(DeptID), 
CONSTRAINT PK_EMPLOYEE_DEPARTMENT PRIMARY KEY CLUSTERED (EmpID ASC,DeptID ASC) 
) 
+0

धन्यवाद, टेबल निर्माण के दौरान ऐसा कुछ नहीं किया जा सकता है। – Thunder

+0

@ थंडर - क्या आपकी तालिका में वर्तमान में प्राथमिक कुंजी है? –

+0

कोई भी इसमें शामिल होने वाली तालिका नहीं है, कई रिश्ते – Thunder

1
select empID, deptID from table 
group by empID, deptID 

संपादित इस लक्ष्य को हासिल कैसे करते हैं:

आप कह रहे हैं इस डेटा, टेबल अपने आप में अद्वितीय होना चाहिए डुप्लिकेट की प्रविष्टि यानी अगर अनुमति नहीं होनी चाहिए, तो आपको इस तालिका पर एक समग्र कुंजी (empID, deptID) को परिभाषित करने की आवश्यकता है।

alter table <tablename> add constraint <compositekeyname> primary key (empID, deptID) 
+0

मैं चयन करते समय तालिका बनाने पर एक बाधा तलाश रहा हूं। – Thunder

4

आप के माध्यम से चला और डुप्लिकेट को हटा दिया है के बाद, निम्न (प्रतिस्थापन उपयुक्त नाम)

ALTER TABLE table ADD CONSTRAINT UQ_EmpID_DeptID UNIQUE (EmpID,DeptID) 

चलाने या जब अपनी मेज बनाने:

CREATE TABLE T1 (
    EmpID int not null, 
    DeptID int not null, 
    /* Other Columns */ 
    constraint PK_T1 PRIMARY KEY (EmpID,DeptID) 
) 

(मई के साथ-साथ इसे प्राथमिक कुंजी बनाओ, जब तक कि आपको तालिका में कोई दूसरा नहीं मिला)

4

ALTER TABLE dbo.YOURTABLE ADD CONSTRAINT IX_YOURTABLE UNIQUE NONCLUSTERED (EmpID, DeptID)

संबंधित मुद्दे