Mysql
 sql >> Database >  >> RDS >> Mysql

MySQL corregge le lacune di incremento automatico in due tabelle

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;

L'FK aggiornerà automaticamente gli ID della tua seconda tabella di conseguenza.

Non ne sono affatto sicuro, ma in alcune versioni precedenti di mysql, l'aggiornamento di una tabella a cui fai riferimento all'interno di una sottoquery dell'aggiornamento potrebbe bloccarsi. In tal caso, basta creare una seconda tabella e riempirla (inserti), quindi eliminare la vecchia e rinominare la nuova.