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

MySQL fikser huller i autoincrement i to tabeller

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;

FK vil automatisk opdatere id'erne for din 2. tabel i overensstemmelse hermed.

Jeg er slet ikke sikker, men i nogle ældre versioner af mysql kan opdatering af en tabel, som du refererer til i en underforespørgsel til opdateringen, gå ned. Hvis det er tilfældet, skal du bare oprette en 2. tabel og udfylde den (indsætte), derefter slette den gamle og omdøbe den nye.



  1. SQL-fejl:0, SQLState:08S01 Kommunikationsforbindelsesfejl

  2. Opdel datointervaller i tilsvarende uger

  3. Vælg flere id'er fra en tabel

  4. Mysql joinforespørgsel på tre tabeller med flere kolonner