mysql:13682
From: kubo <kubo <jazzflute@xxxxxxxxxx>>
Date: Mon, 22 Jan 2007 01:03:57 +0900
Subject: [mysql 13682] Re: トランザクション中のオートインクリメント値
久保と申します。 (このMLへの投稿は初めてです) > トランザクション中のオートインクリメント値について、疑問点がありご質問いたします。 > 例えば、トランザクションを開始後 > 1.steatment1:オートインクリメント値を含むテーブルにインサート処理を実行 > 2.steatment2:last_insert_id()を使ってsteatment1でインサートされたオートインクリメント値を取得 > 3.steatment3:steatment2で取得したオートインクリメント値を他のテーブルにインサート > 4.全てインサートされればコミットする > というような処理を行いたいのですが、steatment2 でsteatment1のオートインクリメント値を取得する事は可能なのでしょうか? > (つまりコミットする前でもlast_insert_id()が目的の値を返すか、それとも、トランザクション開始前の値を返すかという意味です。) 環境が特殊なので、参考になるかわかりませんが、 上記の1/2/3/4が全て1プロセスの中の同トランザクションであれば、 問題ないかと思います。 実際、同トランザクションにてINSERTしてすぐ直後に SELECT LAST_INSERT_ID()した際に、INSERTされた オートインクリメント値を取得できています。 # # MySQL-5.0で、Javaからのアクセスです。 # transaction-isolationは「Read-Committed」に設定しており、 # FrameworkはSeasar+S2Dao+DBFluteを利用しています。 # -- _/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/ kubo <jazzflute@xxxxxxxxxx> jflute <http://d.hatena.ne.jp/jflute> 株式会社ビルドシステム <http://www.buildsystem.co.jp> _/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
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]