考えてみれば、自動インクリメント番号はすべきではありません。 トランザクショナルであること。自動採番が使用されるか、または「ロールバック」されるかどうかを確認するために他のトランザクションを待機する必要がある場合、自動採番を使用する既存のトランザクションによってそれらのトランザクションがブロックされます。たとえば、ID 列に自動採番フィールドを使用するテーブル A を含む以下の疑似コードを考えてみましょう:
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
ユーザー 2 のトランザクションがユーザー 1 の 1 ミリ秒後に開始された場合、テーブル A への挿入は、A への最初の挿入からの自動採番が使用されたかどうかを確認するためだけに、ユーザー 1 のトランザクション全体が完了するまで待機する必要があります。
これは機能であり、バグではありません。自動採番を厳密に連続させる必要がある場合は、別のスキームを使用して自動採番を生成することをお勧めします。