EmpID DeptID
1 1
1 2
2 1
3 2
4 5
5 2
1 1
2 1
我想要一個約束條件來確保該對字段總是唯一的,例如示例中最後兩個的數據不應該是可插入的在上表 請注意,最後兩行是重複的,我想阻止這種數據發生。 如何在SQLSERVER實現這一2005.Thanks如何在多列上設置唯一的約束條件
EmpID DeptID
1 1
1 2
2 1
3 2
4 5
5 2
1 1
2 1
我想要一個約束條件來確保該對字段總是唯一的,例如示例中最後兩個的數據不應該是可插入的在上表 請注意,最後兩行是重複的,我想阻止這種數據發生。 如何在SQLSERVER實現這一2005.Thanks如何在多列上設置唯一的約束條件
ALTER TABLE <YourTable, sysname, Emp>
ADD CONSTRAINT <YourConstraintName, sysname, uix>
UNIQUE NONCLUSTERED (EmpID,DeptID)
(粘貼到SSMS和使用(Ctrl + Shift + M))
或者在創建表做到這一點,因爲它聽起來好像沒有別的選擇鍵使用。
CREATE TABLE T1 (
EmpID int not null,
DeptID int not null,
/* Other Columns */
constraint PK_T1 PRIMARY KEY (EmpID,DeptID)
)
(不妨:
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)
)
select empID, deptID from table
group by empID, deptID
編輯:
如果你說這個數據必須在表本身獨特的,即重複的插入不應該被允許,那麼您需要在此表上定義一個組合鍵(empID,deptID)。
alter table <tablename> add constraint <compositekeyname> primary key (empID, deptID)
我正在尋找一個放置在創建表上的禁忌,而不是選擇時。 – Thunder 2011-02-11 11:21:18
你已經經歷了,並刪除重複項後,創建表時運行以下(替換適當的名稱)
ALTER TABLE table ADD CONSTRAINT UQ_EmpID_DeptID UNIQUE (EmpID,DeptID)
或者使它成爲主鍵,除非你在表中有另一個)
ALTER TABLE dbo.YOURTABLE ADD CONSTRAINT IX_YOURTABLE UNIQUE NONCLUSTERED (EmpID, DeptID)
謝謝,有沒有什麼可以在表創建過程中完成。 – Thunder 2011-02-11 11:23:40