2010-02-25 27 views
17

He encontrado un problema porque ya tengo una clave primaria compuesta en una tabla MYSQL. Pero ahora agregué otra columna a esa tabla y debido a algunos cambios de requisitos, tengo que modificar esa clave primaria compuesta de tal manera que necesito agregar esa columna mencionada anteriormente a esa lista de claves primarias compuestas. ¿Alguien puede decirme cómo alterar esa tabla sin soltar la clave primaria compuesta existente? Estoy haciendo esto en un proyecto de Railscómo agregar una nueva columna a la clave primaria compuesta existente

+0

Tenga en cuenta que tengo las claves externas a algunas de las columnas que están en el – nash

+0

Una llave clave principal compuesta extranjeros para una clave principal parcial? Eso es malo mojo. Realmente debería cambiar a una clave primaria de incremento automático. – MindStalker

+0

Dejar caer una clave no debe soltar los valores, ¿por qué no se puede descartar el PK? – reech

Respuesta

25

No puede alterar la clave principal. Debe soltar y volver a agregarlo:

ALTER TABLE MyTable 
    DROP PRIMARY KEY, 
    ADD PRIMARY KEY (old_col1, old_col2, new_col); 
+0

Esta es la forma de hacerlo si hay algo que le impide dejar caer la clave principal – PrashanD

0

pero si no existe una clave? ejemplo:

ALTER TABLE xxxx ADD id INT NOT NULL AUTO_INCREMENT, ADD PRIMARY KEY(id,id2,id3); 
Cuestiones relacionadas