如何在多列上放置唯一约束

Thu*_*der 15 sql sql-server constraints

EmpID DeptID

1     1
1     2
2     1
3     2
4     5
5     2
1     1   
2     1   
Run Code Online (Sandbox Code Playgroud)

我想有一个约束来确保这对字段始终是唯一的,例如示例中显示的最后两个数据不应该插入到表中.在上表中请注意最后两行是重复,我想防止这样的数据发生.我如何在sqlserver 2005中实现这一点.谢谢

Mar*_*ith 17

ALTER TABLE <YourTable, sysname, Emp> 
ADD CONSTRAINT <YourConstraintName, sysname, uix> 
UNIQUE NONCLUSTERED (EmpID,DeptID) 
Run Code Online (Sandbox Code Playgroud)

(粘贴到SSMS并使用(CTRL + Shift + 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)
)
Run Code Online (Sandbox Code Playgroud)


Dam*_*ver 5

在您完成并删除重复项后,运行以下命令(替换相应的名称)

ALTER TABLE table ADD CONSTRAINT UQ_EmpID_DeptID UNIQUE (EmpID,DeptID)
Run Code Online (Sandbox Code Playgroud)

或者在创建表格时:

CREATE TABLE T1 (
    EmpID int not null,
    DeptID int not null,
    /* Other Columns */
    constraint PK_T1 PRIMARY KEY (EmpID,DeptID)
)
Run Code Online (Sandbox Code Playgroud)

(也可以把它作为主键,除非你在表中有另一个)