基于SQl Server 2008中的2列的唯一键?

时间:2011-03-03 17:26:15

标签: sql-server sql-server-2008

让SQL Server拥有基于2列的唯一键是否可行?

我可以在两列中都有重复项但不能同时重复:

MfgID  :   CustNum   
1      :     Cust01   
1      :     Cust02  
2      :     Cust02  
1      :     Cust03  
3      :     Cust03  
3      :     Cust04  
1      :     Cust02

在上面的例子中,除了最后一行之外,所有这些都没问题。我希望SQL Server能为我解决这个错误。

3 个答案:

答案 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)
)