[pgsql-jp: 36650] Re: 異なるデータベース間のテーブル結合

Toshihiro Kurai tkurai @ taiyo-st.co.jp
2006年 1月 20日 (金) 01:05:52 JST


倉井と申します。

> 石井です.
>
> > 更新系の処理でもdblinkを利用することは可能です。
> > しかし、リモート側の処理に関してはローカルの
> > トランザクション管理の対象となりません
> > (リモート側は常にコミットされるイメージ)
>
> そうですか?単にdblink_execで,リモート側でも明示的にトランザクション
> を開始しておけば,「常にコミットされるイメージ」にはならないと思います
> けど.
>
> > このため、更新系のトランザクションの中で
> > 利用するときは注意が必要です。
> > (ローカル側のロールバックがリモート側に反映されないためです)
>
> ローカル側がロールバックしてしまったら,dblinkでリモート側もロールバッ
> クすれば良いだけではないですか?

おっしゃられるようにリモート側でもトランザクションを開始させれば・・・。
いい加減な情報を流してしまいました。
反省です。

>
> それよりも,ローカル側がコミットできたのに,リモート側がエラーになって
> しまったときの方が大変ですよね.ローカル側のコミットを取り消せないです
> から.
>
> これを解決するには2相コミットを使えばよいのですが,8.1以降限定になって
> しまいます.

つまるところ更新系の処理では、8.1より前のときは
使用しない方が無難ということですね。

2相コミット、8.1以降で早速試してみます。




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