sql >> Databáze >  >> RDS >> Mysql

MySQL opravuje mezery v automatickém přírůstku ve dvou tabulkách

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 podle toho automaticky aktualizuje ID vaší 2. tabulky.

Nejsem si vůbec jistý, ale v některých starších verzích mysql může aktualizace tabulky, na kterou odkazujete v dílčím dotazu aktualizace, selhat. Pokud ano, stačí vytvořit 2. tabulku a vyplnit ji (vložit), poté starou smazat a přejmenovat novou.



  1. Co mají společného olympijské hry, fotbalové zápasy UEFA Euro 2016 a databáze?

  2. SQL rekurzivní dotaz na samoodkazovací tabulku (Oracle)

  3. Automaticky odstranit vrácené e-mailové adresy z databáze?

  4. Oracle DROP TABLE, POKUD EXISTUJE Alternativy