¿Cómo cambiar el id en las tablas de MySQL con los datos existentes a partir de la última autoincrement más alto de identificación?

StackOverflow https://stackoverflow.com/questions/4027954

Pregunta

Yo sólo han logrado migrar una base de datos bastante grande desde SQL Server a MySQL. No establecer las claves principales para auto incremento durante la migración debido a que las tablas tienen relaciones basadas en los identificadores como claves principales que son las claves externas en otra mesa.

Ahora, para añadir nuevos registros quiero alterar la clave primaria columnas 'id' en todas las mesas para ser incrementado automáticamente, pero a partir del último número más alto en la columna id de cada tabla.

¿Cuál es la mejor manera de hacer esto sin perder las relaciones que ya tengo?

ACTUALIZACIÓN: se trata de añadir autoincrement me da este error:

ERROR 1067: Invalid default value for 'id'

SQL Statement:

ALTER TABLE `skandium`.`brands` CHANGE COLUMN `id` `id` INT(11) NOT NULL DEFAULT '0' AUTO_INCREMENT

ERROR 1050: Table 'brands' already exists

SQL Statement:

CREATE TABLE `brands` (
  `id` int(11) NOT NULL DEFAULT '0',
  `brand` varchar(50) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1
¿Fue útil?

Solución

Sólo tiene que añadir el incremento automático en sus columnas necesarias. No afectará a las filas existentes. Se comenzará con el siguiente valor disponible.

Tenga en cuenta que una columna que significa ser auto-incremento sólo que si no se asigna un valor a uno se añadirán por MySQL. Si desea proporcionar valores explícitos, puede hacerlo sin nada especial acontecimiento. Así se podría haber establecido las columnas a la derecha de incremento automático desde el principio.

Una columna con incremento automático no puede tener un valor por defecto explícita.

Probado

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top