Jeśli się nad tym zastanowisz, liczba automatycznego zwiększania nie powinna być transakcyjnym. Jeśli inne transakcje musiałyby czekać, aby zobaczyć, czy auto-numerowanie będzie używane lub "wycofane", zostaną zablokowane przez istniejącą transakcję przy użyciu auto-numerowania. Rozważmy na przykład mój pseudokod poniżej z tabelą A używając pola automatycznego numerowania dla kolumny 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
Jeśli transakcja użytkownika 2 rozpocznie się milisekundę po transakcji użytkownika 1, to jego wstawienie do tabeli A będzie musiało poczekać na zakończenie całej transakcji użytkownika 1 tylko po to, aby sprawdzić, czy użyto automatycznego numerowania z pierwszego wstawienia do A.
To jest funkcja, a nie błąd. Zalecam użycie innego schematu do generowania numerów automatycznych, jeśli chcesz, aby były ściśle sekwencyjne.