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
  • 52,879
  • 11
  • 86
  • 103
Slee
  • 26,182
  • 50
  • 143
  • 241

3 Answers3

22
CREATE UNIQUE NONCLUSTERED INDEX IX_TableName_MfgID_CustNum ON TableName
(
        MfgID  ,
        Column2
) WITH( IGNORE_DUP_KEY = OFF)
amit_g
  • 29,985
  • 8
  • 58
  • 117
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
  • 102,799
  • 24
  • 193
  • 261
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
  • 52,879
  • 11
  • 86
  • 103