Начинът, по който обикновено се справям, е да използвам временна таблица. Вероятно не е изчислително ефективен, но изглежда работи добре! Тук дублирам запис 99 в неговата цялост, създавайки запис 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;
Надявам се, че работи добре за вас!