Уникальный ключ на основе 2 столбцов в SQl Server 2008?

возможно ли иметь SQL Server уникальный ключ на основе двух столбцов?

Я могу иметь дубликаты в обоих столбцах, но не в одно и то же время:

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

В приведенном выше примере все это будет отлично, за исключением последней строки. Я бы хотел, чтобы SQL Server выдавал ошибку для меня.

Ответ 1

CREATE UNIQUE NONCLUSTERED INDEX IX_TableName_MfgID_CustNum ON TableName
(
        MfgID  ,
        Column2
) WITH( IGNORE_DUP_KEY = OFF)

Ответ 2

CREATE TABLE table1(
  MfgID INTEGER NOT NULL,
  CustNum VARCHAR(255) NOT NULL,
  CONSTRAINT unique_1 UNIQUE (MfgID, CustNum)
)

ИЛИ

ALTER TABLE table1 ADD CONSTRAINT unique_1 UNIQUE(fgID, CustNum)

Ответ 3

Да, он называется составной первичный ключ.

CREATE TABLE table1(
  MfgID INTEGER NOT NULL,
  CustNum VARCHAR(255) NOT NULL,
  PRIMARY KEY (MfgID, CustNum)
)