让SQL Server拥有基于2列的唯一键是否可行?
我可以在两列中都有重复项但不能同时重复:
MfgID : CustNum
1 : Cust01
1 : Cust02
2 : Cust02
1 : Cust03
3 : Cust03
3 : Cust04
1 : Cust02
在上面的例子中,除了最后一行之外,所有这些都没问题。我希望SQL Server能为我解决这个错误。
答案 0 :(得分:16)
CREATE UNIQUE NONCLUSTERED INDEX IX_TableName_MfgID_CustNum ON TableName
(
MfgID ,
Column2
) WITH( IGNORE_DUP_KEY = OFF)
答案 1 :(得分:7)
CREATE TABLE table1(
MfgID INTEGER NOT NULL,
CustNum VARCHAR(255) NOT NULL,
CONSTRAINT unique_1 UNIQUE (MfgID, CustNum)
)
OR
ALTER TABLE table1 ADD CONSTRAINT unique_1 UNIQUE(fgID, CustNum)
答案 2 :(得分:1)
是的,它被称为复合主键。
CREATE TABLE table1(
MfgID INTEGER NOT NULL,
CustNum VARCHAR(255) NOT NULL,
PRIMARY KEY (MfgID, CustNum)
)