Mysql
 sql >> Datenbank >  >> RDS >> Mysql

MySQL behebt Autoincrement-Lücken in zwei Tabellen

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;

Der FK aktualisiert automatisch die IDs Ihres 2. Tisches entsprechend.

Ich bin mir überhaupt nicht sicher, aber in einigen älteren Versionen von MySQL kann das Aktualisieren einer Tabelle, auf die Sie in einer Unterabfrage des Updates verweisen, abstürzen. Wenn ja, einfach eine 2. Tabelle erstellen und füllen (inserts), dann die alte löschen und die neue umbenennen.