ひろです。
ご回答ありがとうございます。

実は「もしかして」と思い、例2のパターンと同じようにcommitを試してみたのですが、
再ログインするまで最新の結果は取れませんでした。
そうかと思うと、何もしなくても例1のC3で最新のデータが取れる時もありました。
それで途方に暮れてしまった次第です。
裏で実行するプログラムは手動で起動していますので、完了は見届けてから
selectを発行しています。

自分一人では確認方法に問題が有るかも知れないと思い、同僚にもクロスチェックして
貰いましたが同僚も首をかしげていました。

よろしくお願いします。


2012年8月27日 20:49 Tomohiro 'Tomo-p' KATO <tomop@teamgedoh.net>:
 こんばんは。かとうです。

On 12/08/27 20:28, ひろ wrote:

> 2ではコミットしていますので、3でその結果が見れるものと思っていたのですが
> 見れたり見れなかったりしたので質問させて頂きました。
> 同じ操作をした時に、常に同じ結果になるなら、それなりに納得もできるのですが、
> 何らかのタイミング?で動作が変わってしまうため困っておりました。
>
> 2は確かにコミットしている(再ログインで最新の結果が見れるので間違いないはず)のですが、
> なんで見れたり見れなかったりするのか不明です。

  勘違いされているようですが、私はmysqlコマンド上でのお話をしています。

  *例1
   C1. mysqlコマンドでログイン
   C2. select文発行
   C3. select文発行
   C4. ログアウト

  例1では、C2.からC4.までが1トランザクションになっており、分離レベル
 がREPEATABLE READの場合、C3.ではC2.より前にcommitされたデータが読ま
 れています(C2.とC3.での結果が同一となる)。C2.〜C3.の間にcommitされ
 たデータを読みたい場合は

  *例2
   C1. mysqlコマンドでログイン
   C2. select文発行
   C3. commit/rollback
   C4. select文発行
   C5. ログアウト

 のように、mysqlコマンド上でもトランザクション終了を明示する必要があ
 ります。例2の場合、C2.〜C3.、C4.〜C5.、の2トランザクションになります。

--
    __________________________________________________
  _/_/  Tomohiro "Tomo-p" KATO  <tomop@teamgedoh.net>
 _/_/  Team Gedoh Network  http://www.teamgedoh.net/
_/_/  Key fingerprint = A6D8 3981 3575 9F00 EFC3  9C2B F03A 5383 9287 74D9