¿Cómo configurar múltiples campos como clave principal en MySQL?

23

Tengo una mesa con campos

ID de empleado

blahblah

blahblah2

.....

RecordMonth

RecodrdYear

  • por lo que cada empleado solo debe tener una entrada coincidente para un mes, año, Emp #. ¿Cómo configuro una mesa?

Entonces, ¿cómo configuro la tabla para que EmployeeID pueda actualizarse una vez al mes pero nunca pueda tener dos entradas para un mes y año coincidentes?

LOSTinDB
fuente

Respuestas:

43

Use una clave primaria compuesta :

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

Y si su tabla ya existe, suelte la clave principal anterior:

ALTER TABLE yourtable
DROP PRIMARY KEY;

Y recrearlo:

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