Způsob, jakým to obvykle dělám, je použití dočasné tabulky. Pravděpodobně to není výpočetně efektivní, ale zdá se, že to funguje dobře! Zde duplikuji záznam 99 jako celek, čímž vytvořím záznam 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;
Doufám, že to pro vás funguje dobře!