implémenter l'unicité, contraintes lors de l'insertion de données dans une colonne avec une autre colonne

J'ai une table A avec des colonnes Aname, Work

create table A(Aname varchar(40) , Work varchar(40) ) 

Le tableau contient déjà datatables ci-dessous:

 INSERT INTO A VALUES ('GREAME ','PLAYER') 

Aname || Travail

GREAME PLAYER

maintenant je veux que quand j'insère un nouvel logging, Aname – GREAME, Work — SALESMAN, alors il est

inséré, mais si j'insère ceci: Aname – GREAME Work – PLAYER à nouveau, alors il n'est pas inséré

Je veux ceci:

Aname || Travail

GREAME PLAYER

GREAME PLAYER — NE PEUT PAS ÊTRE INSÉRÉ

GREES SALESMAN — POURRAIT ÊTRE INSÉRÉ

Autrement dit, la colonne Travail vérifie l'unicité lorsque la valeur à insert d'Aname

existe déjà.

Comment puis-je l'implémenter? S'il vous plaît aider avec le code.

MODIFIER——

dans la requête d'insertion, la colonne Aname serait ramassée à partir d'une autre table B alors comment puis-je le faire?

Une contrainte unique ou une key primaire vous empêchera d'insert une erreur / exception. Cet insert n'insèrera tout simplement pas la ligne où il existe déjà.

 insert into A (Aname, Work) select 'GREAME', 'PLAYER' where not exists (select * from A where Aname = 'GREAME' and Work = 'PLAYER') 

Et si vous avez besoin de la combinaison de l'AName et du Travail pour être Unique alors

 ALTER TABLE A ADD CONSTRAINT U_NameWork UNIQUE(AName, Work) 

Mais si vous avez besoin d'être unique quel que soit le travail, alors

 ALTER TABLE A ADD CONSTRAINT U_Name UNIQUE(AName) 

Edit: Comme pour SanjeevKumar, faire (AName, Work) une PRIMARY KEY composite fonctionnera aussi pourvu que vous n'ayez pas d'autre PK, bien que vous puissiez aussi considérer un PK de rlocation.