2010-06-22 24 views
17

Estoy cambiando mi tabla mysql db de un id (automático) a un uid.mysql, alter column remove primary key e incremento automático

ALTER TABLE companies DROP PRIMARY KEY; 
ALTER TABLE companies ADD PRIMARY KEY (`uuid`); 

Este es el error que consigo ..

[SQL] ALTER TABLE companies DROP PRIMARY KEY; 
[Err] 1075 - Incorrect table definition; there can be only one auto column and it must be defined as a key 

que entiendo, tengo que cambiar el id de un no-autoincrement porque dejo caer como la clave principal.? ¿Cuál es la sintaxis para cambiar una columna para eliminar la clave principal y el incremento automático?

ALTER TABLE companies change id id ?????????? int(11) 

Respuesta

24

Si necesita quitar el incremento automático y la clave primaria de la columna de id en una sola instrucción SQL, esto debería hacer:

ALTER TABLE companies DROP PRIMARY KEY, CHANGE id id int(11); 

De hecho, usted debe ser capaz de hacer todo en un solo ALTER TABLE consulta:

ALTER TABLE companies 
DROP PRIMARY KEY, 
CHANGE id id int(11), 
ADD PRIMARY KEY (uuid); 
+0

Si lo hago como 3 declaraciones, funcionará .. ALTER TABLE companies change id id int (11); ALTER TABLE companies DROP PRIMARY KEY; ALTER TABLE companies AGREGUE LA CLAVE PRIMARIA (uuid); – Brett

+1

En mi situación, solo quiero soltar el incremento automático. Intenté esto: 'ALTER TABLE myTable CHANGE _id _id INT (12)' pero dice "error de sintaxis cerca de CHANGE". ¿Qué estoy haciendo mal aquí? –

2

La consulta para el incremento de eliminación automática es:

alter table companies DROP PRIMARY KEY, 
change id id int(11) NOT NULL 

Ahora puede ver la estructura de la tabla sin incremento automático.

Si desea agregar la clave principal de otra columna, a continuación, utilizar esta consulta

alter table companies add PRIMARY KEY(uuid) 

Si quieres dejar incremento automático, clave principal y agregar la clave principal a la nueva columna en la misma consulta, a continuación, utilizar esta consulta

alter table comapnies DROP PRIMARY KEY, 
    change id id int(11) NOT NULL, 
    add PRIMARY KEY(uuid) 
4

Cuando usted no está cambiando el nombre de la columna que se puede utilizar MODIFY:

ALTER TABLE `companies` MODIFY `id` int(11), 
          DROP PRIMARY KEY, 
        ADD PRIMARY KEY (`uuid`); 

Al hacer esto, todo en una declaración alternativa también se trata como atómico, por lo que no hay posibilidad de incoherencia entre las consultas (a diferencia de ejecutar múltiples instrucciones en la fila).

Cuestiones relacionadas