Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

MySQL sửa khoảng trống autoincrement trong hai bảng

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 sẽ tự động cập nhật id của bảng thứ hai của bạn cho phù hợp.

Tôi không chắc lắm nhưng trong một số phiên bản mysql cũ hơn, cập nhật bảng mà bạn đang tham chiếu trong một truy vấn con của bản cập nhật có thể bị lỗi. Nếu vậy, chỉ cần tạo một bảng thứ hai và điền vào nó (chèn), sau đó xóa bảng cũ và đổi tên bảng mới.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Trợ giúp về thuật toán truy vấn MYSQL trong PHP

  2. Sự khác biệt giữa các addlash của PHP và mysql (i) _escape_string là gì?

  3. Tải localhost chạy trên mac OS X Yosemite

  4. Trường varchar rộng gây ra lỗi chuyển đổi được yêu cầu không được hỗ trợ bằng cách sử dụng truy vấn mở với máy chủ được liên kết MySQL

  5. Đá quý dm_mysql_adapter của Datamapper có được hỗ trợ trên windows không?