2012-07-09 12 views
1

J'ai deux colonnes de type et de nom dans la base de données. Je veux appliquer une contrainte unique où le nom est unique dans chaque type.Comment appliquer une contrainte unique sur deux colonnes SQL Server?

Type Name 
A  ABC 
R  ABC 
B  ABC 

devraient être autorisés alors

Type Name 
A ABC 
A ABC 

ne doivent pas être autorisés

Comment appliquer cette contrainte lorsque le nom est unique dans chaque type?

Merci,

+0

Cochez cette case http://stackoverflow.com/questions/5184194/unique-key-based-on-2-columns-in-sql-server-2008 –

Répondre

5

Vous pouvez créer une contrainte unique de plusieurs colonnes comme ce

ALTER TABLE MyTable ADD UNIQUE (Type, Name) 

qui mettra en application les règles que vous décrivez.

0

Lors de la création table que vous pouvez faire

CREATE TABLE YourTable(
    Name VARCHAR(255) NOT NULL, 
    Type VARCHAR(255) NOT NULL, 
    PRIMARY KEY (Type, Name) 
) 

Ou vous pouvez modifier votre table avec

ALTER TABLE YourTable ADD PRIMARY KEY (Type, Name) 

Après que j'Exécuté suivant quatre .. (dernier échoué)

insert into YourTable values('AB','ABD') 
insert into YourTable values('AA','ABD') 
insert into YourTable values('AA','ABC') 
insert into YourTable values('AA','ABD') 

Merci, Jigar

+0

Cela ne marche pas Je veux que le nom soit unique dans chaque type. Le nom peut être répété dans différents types. La méthode ci-dessus ne permet pas de dupliquer les entrées pour un type différent. – asifa

+0

Hey Asifa test maintenant ça marche. –

+1

Je ne voudrais vraiment pas ** avoir ** deux VARCHAR (255) comme clé primaire de n'importe quelle table ... –

Questions connexes