[pgsql-jp: 36767] Re: シェルにおけるトランザクション

nemuizzz nemuizzz @ 1km.jp
2006年 2月 24日 (金) 00:35:08 JST


nemuizzzです。
 
みなさん,回答ありがとうございます。

>psqlが終了するとともにpostgresへの接続は終了してしまいます。
>多分、終了時はcommitがかかったと思いますが。
その通りだと思います。
psql -cだとコマンド命令になりますので,一回のSQLでcommitがかかっているの
だと思います。

>これじゃだめですか?
>
>psql データベース名 << EOF
>begin;
>update ...;
> :
>commit;
>EOF

なるほど。
最後までうまくいけば,commitがかかり,テーブルに反映される。
もし途中で失敗するば,beginに対するcommitが行われないので,テーブルへは
反映されない。ということでしょうか。
この場合,失敗時は明示的にrollbackを指定せず,そのままコネクションの切断
となると思うのですが,postgres上に変なメモリ領域が残ったりしないでしょう
か?
しばらくは残るけど,ある一定の時間がたてば消える,などの動きになるのかな。

もし,ご存知でしたら宜しくお願い致します。

一度提案されたことを試したいと思います。

みなさん,ありがとうございました。





pgsql-jp メーリングリストの案内