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

mysql:13694

From: "Mitsuru Araki" <"Mitsuru Araki" <gunny517@xxxxxxxxxx>>
Date: Thu, 25 Jan 2007 20:37:50 +0900
Subject: [mysql 13694] Re: トランザクション中のオートインクリメント値

久保様 広津様

ご指摘ありがとうございます。
なるほど。使えそうですね。
今までもlast_insert_id()は使っていたのですが、
トランザクションをかけていないケースだったので・・・・

> ですので、Rollback した場合、そのトランザクション中で自動生成
> された値は、Rollback 後の自動生成値としては再使用されず欠番となります。

なるほど。
これはMS Accessでオートナンバーと呼ばれている設定
(要するにオートインクリメントですね)をされたカラムに
入力を始めた場合、途中で中止してもそのとき入力しようとした
レコードのオートインクリメント値が欠番になるのと同じ原理ですね。

スッキリしました。
安心して使ってみます。
ありがとうございました。




07/01/22 に T.Hirotsu<hirotsu@xxxxxxxxxx> さんは書きました:
> こんにちは、広津です。
> エンジンは 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]