Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

MySQL memperbaiki kesenjangan peningkatan otomatis dalam dua tabel

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 akan secara otomatis memperbarui id tabel ke-2 Anda.

Saya tidak yakin sama sekali tetapi di beberapa versi mysql yang lebih lama, perbarui tabel yang Anda rujuk dalam subquery dari pembaruan dapat macet. Jika demikian, buat saja tabel ke-2 dan isi (sisipan), lalu hapus yang lama dan ganti nama yang baru.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana menemukan baris tertentu dalam hasil kueri MySQL?

  2. meniadakan pola regex di mysql

  3. argumen yang diberikan bukan sumber daya hasil MySQL yang valid

  4. Apa susunan MySQL yang terbaik untuk menerima semua karakter unicode?

  5. Dua kolom sebagai kunci utama di mysql?