Ако приемем, че няма проблеми с външния ключ, с които да се справите, този код ще го направи:
set @id:=0;
update mytable
set id = (@id := @id + 1)
order by id;
Ако има проблеми с външния ключ, уверете се, че вашите ограничения са дефинирани по този начин преди изпълнявате актуализацията:
ALTER CHILD_TABLE ADD CONSTRAINT
FOREIGN KEY MYTABLE_ID REFERENCES MYTABLE
ON UPDATE CASCADE; -- This is the important bit
Когато всичко е готово, изпълнете това, за да коригирате стойността на auto_increment:
SELECT MAX(ID) + 1 FROM MYTABLE; -- note the output
ALTER TABLE MYTABLE AUTO_INCREMENT = <result from above>;