De manier waarop ik het meestal aanpak, is het gebruik van een tijdelijke tabel. Het is waarschijnlijk niet rekenkundig efficiënt, maar het lijkt goed te werken! Hier dupliceer ik record 99 in zijn geheel en creëer record 100.
CREATE TEMPORARY TABLE tmp SELECT * FROM invoices WHERE id = 99;
UPDATE tmp SET id=100 WHERE id = 99;
INSERT INTO invoices SELECT * FROM tmp WHERE id = 100;
Ik hoop dat dat goed voor je werkt!