Mysql
 sql >> Baza danych >  >> RDS >> Mysql

MySQL naprawia luki autoinkrementacji w dwóch tabelach

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 automatycznie zaktualizuje odpowiednio identyfikatory drugiej tabeli.

W ogóle nie jestem pewien, ale w niektórych starszych wersjach mysql zaktualizuj tabelę, do której odwołujesz się w podzapytaniu, w którym aktualizacja może się zawiesić. Jeśli tak, po prostu utwórz drugą tabelę i wypełnij ją (wstawkami), a następnie usuń starą i zmień nazwę nowej.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Nie można połączyć kontenera MySQL z kontenerem Tomcat w docker

  2. Błąd w zmiennej DECLARE w procedurze MySql

  3. Problem z wydajnością group_concat w MySQL

  4. MySQL — projektowanie nadtypów/podtypów

  5. Chcesz przechowywać obiekt w bazie danych MySQL