уникальный ключ на основе 2 столбцов в SQl Server 2008? - PullRequest
12 голосов
/ 03 марта 2011

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

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

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

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

Ответы [ 3 ]

16 голосов
/ 03 марта 2011
CREATE UNIQUE NONCLUSTERED INDEX IX_TableName_MfgID_CustNum ON TableName
(
        MfgID  ,
        Column2
) WITH( IGNORE_DUP_KEY = OFF)
7 голосов
/ 03 марта 2011
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)
1 голос
/ 03 марта 2011

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

CREATE TABLE table1(
  MfgID INTEGER NOT NULL,
  CustNum VARCHAR(255) NOT NULL,
  PRIMARY KEY (MfgID, CustNum)
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...