web-dev-qa-db-fra.com

Comment configurer plusieurs champs comme clé primaire dans MySQL?

J'ai une table avec des champs

EmployeeID

blahblah

blahblah2

.....

RecordMonth

RecordYear

  • donc chaque employé ne devrait avoir une entrée correspondante que pour un mois, une année, Emp #. Comment mettre en place une table.

Alors, comment puis-je configurer la table afin que EmployeeID puisse être mis à jour une fois par mois mais ne puisse jamais avoir deux entrées pour un mois et une année correspondants?

25
LOSTinDB

Utilisez une clé primaire composée:

CREATE TABLE yourtable 
  ( 
     employeeid  INT, 
     blahblah    VARCHAR(255), 
     blahblah2   VARCHAR(255), 
     recordmonth DATE, 
     recordyear DATE, 
     PRIMARY KEY (employeeid, recordmonth, recordyear) 
  ) 

Et si votre table existe déjà, supprimez l'ancienne clé primaire:

ALTER TABLE yourtable
DROP PRIMARY KEY;

Et recréez-le:

ALTER TABLE yourtable
ADD PRIMARY KEY (employeeid, recordmonth, recordyear);
47
Maxime Fouilleul