Si vous y réfléchissez, le nombre d'incrémentation automatique ne devrait pas être transactionnel. Si d'autres transactions devaient attendre pour voir si la numérotation automatique allait être utilisée ou "annulée", elles seraient bloquées par la transaction existante utilisant la numérotation automatique. Par exemple, considérez mon pseudo-code ci-dessous avec la table A en utilisant un champ de numérotation automatique pour la colonne 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
Si la transaction de l'utilisateur 2 démarre une milliseconde après celle de l'utilisateur 1, son insertion dans la table A devra attendre que la transaction entière de l'utilisateur 1 se termine juste pour voir si la numérotation automatique de la première insertion dans A a été utilisée.
Il s'agit d'une fonctionnalité, pas d'un bug. Je recommanderais d'utiliser un autre schéma pour générer des numéros automatiques si vous avez besoin qu'ils soient étroitement séquentiels.