Giả sử không có vấn đề khóa ngoại nào cần giải quyết, mã này sẽ thực hiện điều đó:
set @id:=0;
update mytable
set id = (@id := @id + 1)
order by id;
Nếu có vấn đề về khóa ngoại, hãy đảm bảo rằng các ràng buộc của bạn được xác định như thế này trước bạn thực hiện cập nhật:
ALTER CHILD_TABLE ADD CONSTRAINT
FOREIGN KEY MYTABLE_ID REFERENCES MYTABLE
ON UPDATE CASCADE; -- This is the important bit
Khi tất cả hoàn tất, hãy thực thi điều này để sửa giá trị auto_increment:
SELECT MAX(ID) + 1 FROM MYTABLE; -- note the output
ALTER TABLE MYTABLE AUTO_INCREMENT = <result from above>;