[前][次][番号順一覧][スレッド一覧]

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]