Como alterar o ID nas tabelas MySQL existentes com dados para increment automaticamente do último ID mais alto?

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

Pergunta

Acabei de conseguir migrar um grande banco de dados do SQL Server para o MySQL. Não defini as chaves primárias para o incremento automático durante a migração, porque as tabelas têm relacionamentos com base em IDs como chaves primárias, que são chaves estrangeiras em outra tabela.

Agora, para adicionar novos registros, quero alterar as colunas de 'ID' da chave primária em todas as tabelas para serem auto -increment, mas começando do último número mais alto da coluna ID em cada tabela.

Qual é a melhor maneira de fazer isso sem perder os relacionamentos que já tenho?

ATUALIZAÇÃO: Tentar adicionar autoinncrement me dá esse erro:

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
Foi útil?

Solução

Basta adicionar o incremento automático nas colunas necessárias. Não afetará as linhas existentes. Começará com o próximo valor disponível.

Observe que uma coluna sendo incremento automático significa apenas que, se você não atribuir um valor a ela, será adicionado pelo MySQL. Se você deseja fornecer valores explícitos, pode fazê -lo sem nada de especial acontecendo. Então você poderia ter definido essas colunas para incrementar automaticamente desde o início.

Uma coluna com incremento automático não pode ter um valor padrão explícito.

Testado

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top