mysql:13683
From: "T.Hirotsu" <"T.Hirotsu" <hirotsu@xxxxxxxxxx>>
Date: Mon, 22 Jan 2007 10:42:59 +0900
Subject: [mysql 13683] Re: トランザクション中のオートインクリメント値
こんにちは、広津です。 エンジンは InnoDB と仮定します。 Ver. 4.0, 4.1, 5.0 で私もそのようにして使っています。 select LAST_INSERT_ID() は、トランザクション分離レベルや、 トランザクションブロックの内外に関わらず、Connection ごとに、 最後に自動生成された AUTO_INCREMENT カラム値を返すようです。 「最後に自動生成された」とは、「トランザクションが最終的に Commit か Rollback かは関係なく、とりあえず Insert に成功した」 ということかと。 ですので、Rollback した場合、そのトランザクション中で自動生成 された値は、Rollback 後の自動生成値としては再使用されず欠番となります。 (でないと、逆に使えないですよね、、、(^^;)
13681 2007-01-22 00:00 ["Mitsuru Araki" <gun] トランザクション中のオートインクリメント値 13682 2007-01-22 01:03 ┣[kubo <jazzflute@xxxx] -> 13683 2007-01-22 10:42 ┗["T.Hirotsu" <hirotsu] 13694 2007-01-25 20:37 ┗["Mitsuru Araki" <gun]