una sirve que primaria para llave foranea eliminar definir declarar compuesta como clave auto_increment mysql sql mysql-error-1075

foranea - para que sirve la llave primaria en mysql



mysql, alterar columna eliminar clave principal e incremento automático (3)

Estoy cambiando mi tabla de db mysql de un id (automático) a un uid.

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

Este es el error que recibo ..

[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

Lo que entiendo, necesito cambiar la identificación a un no incremento automático porque la suelto 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)


Cuando no estés cambiando el nombre de la columna, puedes usar MODIFY :

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

Al hacer todo esto en una sola declaración alternativa, también se trata como atómico, por lo que no hay posibilidad de inconsistencia entre las consultas (a diferencia de la ejecución de varias declaraciones en fila).


La consulta para eliminar el incremento automático es:

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

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

Si desea agregar una clave primaria a otra columna, use esta consulta

alter table companies add PRIMARY KEY(uuid)

Si desea eliminar el incremento automático, la clave principal y agregar la clave principal a la nueva columna en la misma consulta, utilice esta consulta

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


Si necesita eliminar el incremento automático y la clave principal 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, debería poder hacer todo en una sola consulta ALTER TABLE :

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