[pgsql-jp: 32136] Re: トランザクション中に ERRORが発生するとABORT する

Tatsuo Ishii t-ishii @ sra.co.jp
2004年 1月 27日 (火) 23:23:55 JST


石井です.

> ANSI/ISO SQLにSAVEPOINTというのがあるじゃないですか?
> 
> あれって何らかのエラー(SQL以外のエラーもあるんだろうけど、主にSQL)が
> 発生したときに途中までロールバックして、別の処理をやって何とかコミット
> まで持っていく、という用途を想定しているんじゃないかと思います。

そのようですね.

> 残念ながらPostgreSQLにはSAVEPOINTはないものの、それにしてもエラー即
> トランザクション全体のロールバックというのは、私も不便に思いますし、
> これが本当にあるべき仕様なのかという点については疑問に思います。

savepointもnested transactionもないPostgreSQLのようなflat transaction
モデルではそうなるのが仕様だと思います.

> もしトランザクションを継続できれば、例えば自分でINSERTしたレコードに
> 対してDELETEを発行することにより擬似的にSAVEPOINTまでのROLLBACKを
> 実現することもできるわけですし。

flat transactionモデルでそれをやっちゃおしまい...
--
Tatsuo Ishii



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