Den måde, jeg plejer at gøre, er at bruge et midlertidigt bord. Det er nok ikke beregningsmæssigt effektivt, men det ser ud til at fungere ok! Her duplikerer jeg rekord 99 i sin helhed og skaber rekord 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;
Håber det virker ok for dig!