Se ci pensi, il numero di incremento automatico non dovrebbe essere transazionale. Se altre transazioni dovessero attendere per vedere se la numerazione automatica sarebbe stata utilizzata o "riportata indietro", sarebbero state bloccate dalla transazione esistente utilizzando la numerazione automatica. Ad esempio, considera il mio codice psuedo di seguito con la tabella A utilizzando un campo di numerazione automatica per la colonna ID:
User 1
------------
begin transaction
insert into A ...
insert into B ...
update C ...
insert into D ...
commit
User 2
-----------
begin transaction
insert into A ...
insert into B ...
commit
Se la transazione dell'utente 2 inizia un millisecondo dopo quella dell'utente 1, il loro inserimento nella tabella A dovrebbe attendere il completamento dell'intera transazione dell'utente 1 solo per vedere se è stato utilizzato il numero automatico dal primo inserimento in A.
Questa è una funzionalità, non un bug. Consiglierei di utilizzare un altro schema per generare numeri automatici se hai bisogno che siano strettamente sequenziali.