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)
在您完成并删除重复项后,运行以下命令(替换相应的名称)
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)
(也可以把它作为主键,除非你在表中有另一个)