Cách mà tôi thường làm là sử dụng một bảng tạm thời. Nó có thể không hiệu quả về mặt tính toán nhưng nó có vẻ hoạt động tốt! Ở đây tôi đang sao chép toàn bộ bản ghi 99, tạo bản ghi 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;
Hy vọng rằng điều đó phù hợp với bạn!