sql >> Database >  >> RDS >> Mysql

MySQL repareert auto-increment hiaten in twee 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;

De FK zal automatisch de ID's van uw 2e tafel dienovereenkomstig bijwerken.

Ik weet het helemaal niet zeker, maar in sommige oudere versies van mysql kan het bijwerken van een tabel waarnaar u verwijst in een subquery van de update crashen. Zo ja, maak dan gewoon een 2e tafel aan en vul deze (invoegen), verwijder vervolgens de oude en hernoem de nieuwe.



  1. Waar haalt mysql_ssl_rsa_setup OpenSSL-bestanden vandaan?

  2. Een kolom toevoegen in SQL

  3. Objecten vergelijken op waarde. Deel 6:Implementatie van structuurgelijkheid

  4. Is er voor een beginner veel verschil tussen MySQL en PostgreSQL?