15

is it posible to have SQL Server to have a unique key based on 2 columns?

I can have duplicates in both columns but not at the same time:

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

In the example above all of these would be fine EXCEPT the last row. I'd like SQL Server to kck out an error on this for me.

Sachin Shanbhag
  • 54,530
  • 11
  • 89
  • 103
Slee
  • 27,498
  • 52
  • 145
  • 243

3 Answers3

22
CREATE UNIQUE NONCLUSTERED INDEX IX_TableName_MfgID_CustNum ON TableName
(
        MfgID  ,
        Column2
) WITH( IGNORE_DUP_KEY = OFF)
amit_g
  • 30,880
  • 8
  • 61
  • 118
9
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)
RichardTheKiwi
  • 105,798
  • 26
  • 196
  • 262
Rahul R
  • 181
  • 1
  • 1
  • 5
3

Yes, It is called composite primary key.

CREATE TABLE table1(
  MfgID INTEGER NOT NULL,
  CustNum VARCHAR(255) NOT NULL,
  PRIMARY KEY (MfgID, CustNum)
)
Sachin Shanbhag
  • 54,530
  • 11
  • 89
  • 103