Angenommen, es gibt keine Probleme mit Fremdschlüsseln, mit denen Sie sich befassen müssen, wird dieser Code es tun:
set @id:=0;
update mytable
set id = (@id := @id + 1)
order by id;
Wenn es Probleme mit Fremdschlüsseln gibt, stellen Sie sicher, dass Ihre Einschränkungen vorher so definiert sind Sie führen das Update durch:
ALTER CHILD_TABLE ADD CONSTRAINT
FOREIGN KEY MYTABLE_ID REFERENCES MYTABLE
ON UPDATE CASCADE; -- This is the important bit
Wenn alles fertig ist, führen Sie Folgendes aus, um den auto_increment-Wert zu korrigieren:
SELECT MAX(ID) + 1 FROM MYTABLE; -- note the output
ALTER TABLE MYTABLE AUTO_INCREMENT = <result from above>;