Wie richte ich in MySQL mehrere Felder als Primärschlüssel ein?

22

Ich habe einen Tisch mit Feldern

Mitarbeiter-ID

blahblah

blahblah2

.....

RecordMonth

RecodrdYear

  • Daher sollte jeder Mitarbeiter nur einen passenden Eintrag für einen Monat, ein Jahr oder eine Position haben. Wie richte ich einen Tisch ein?

Wie richte ich die Tabelle so ein, dass die Mitarbeiter-ID einmal im Monat aktualisiert werden kann, aber niemals zwei Einträge für einen Monat und ein Jahr vorhanden sind?

LOSTinDB
quelle

Antworten:

42

Verwenden Sie einen zusammengesetzten Primärschlüssel :

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

Und wenn Ihre Tabelle bereits existiert, löschen Sie den alten Primärschlüssel:

ALTER TABLE yourtable
DROP PRIMARY KEY;

Und erstelle es neu:

ALTER TABLE yourtable
ADD PRIMARY KEY (employeeid, recordmonth, recodrdyear);
Maxime Fouilleul
quelle