Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

MySQL corrigindo lacunas de incremento automático em duas tabelas

ALTER TABLE table2
ADD FOREIGN KEY FK_IMAGE (id_image)
REFERENCES table1 (id_image)
ON DELETE CASCADE
ON UPDATE CASCADE;

SET @currentRow = 0;

UPDATE table1 INNER JOIN (
    SELECT @currentRow := @currentRow + 1 AS id_image_new, id_image AS id_image_old
    FROM table1
    ORDER BY id_image ASC) t on t.id_image_old = table1.id_image
SET table1.id_image = t.id_image_new;

ALTER TABLE table1 AUTO_INCREMENT = 1;

O FK atualizará automaticamente os ids da sua 2ª tabela de acordo.

Não tenho certeza, mas em algumas versões mais antigas do mysql, atualizar uma tabela que você está referenciando em uma subconsulta da atualização pode travar. Nesse caso, basta criar uma 2ª tabela e preenchê-la (inserções), depois excluir a antiga e renomear a nova.