Comment configurer plusieurs champs comme clé primaire dans MySQL?

23

J'ai une table avec des champs

EmployeeID

blahblah

blahblah2

.....

RecordMonth

RecodrdYear

  • donc chaque employé ne doit 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?

LOSTinDB
la source

Réponses:

43

Utilisez une clé primaire composée :

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

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, recodrdyear);
Maxime Fouilleul
la source