Crear y establecer un campo autoincremental manualmente en MySQL

Más que un artículo es una autonota, con una situación en la que me he encontrado hoy mismo.

A veces pasa que por error o necesidades del proyecto, te encuentras con una tabla que no tiene un clave primaria. Al querer añadir un nuevo campo id resulta que todos se establecen a 0, y no puedes usar el AUTO_INCREMENT de MySQL ni siquiera establecerlo como PRIMARY_KEY. Para solucionarlo hay que poner manualmente un valor distinto para cada registro.

Para hacerlo rápidamente, podemos recurrir a esta query:

SET @position := 0; -- Define una variable
UPDATE mi_tabla
SET id = (@position := @position + 1)
WHERE id = 0;

Esto cambiará todos los campos ID por un valor que se genera usando la variable @position, y así establecemos un id diferente, que nos permitirá cambiar el campo como PRIMARY_KEY y AUTO_INCREMENT.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *