Det enda sättet att generera ett automatiskt inkrementvärde är att försöka infoga. Men du kan återställa den transaktionen och fortfarande läsa det genererade id:t. I MySQL 5.1 och senare är standardbeteendet att automatiska inkrementvärden inte "återförs" till stacken när du rullar tillbaka.
START TRANSACTION;
INSERT INTO mytable () VALUES ();
ROLLBACK;
SELECT LAST_INSERT_ID() INTO @my_ai_value;
Nu kan du vara säker på att ingen annan transaktion kommer att försöka använda det värdet, så du kan använda det i dina externa processer, och sedan till sist infoga ett värde manuellt som använder det id-värdet (när du infogar ett specifikt id-värde, gör inte MySQL det generera ett nytt värde).