[pgsql-jp: 28989] Re: libpgvbで、update 結果を知る方法

Yoshiiro Tsumori tsumori @ cds.ne.jp
2003年 2月 10日 (月) 01:07:03 JST


どもどもさいとうさん。直々のレスをありがとうございます。

> [update文自体は条件を満たさなくても正常に実行される]
> という部分が気になりますが、件数がその更新される条件に深く関わって
> いるのでしょうか?

whereで条件を付けて、特定(1件)のレコードをupdateしています。こ
のとき確率としては低いのですがマルチユーザー環境ですので、同じレ
コードの内容が他から書き変えられる可能性があります。複数のレコー
ドを更新するユーザーオペレーションなので、テーブル全体をロックを
してしまう訳にもいきません。そこでそのレコードを読み込んだ時点の
他のデータを条件に、updateを発行します。これによって、もしデータ
が書き変わっていたら条件を満たさないのでupdateされないことになり
ます。updateを発行後、updateされたレコード数を調べて、0だったらロー
ルバックするように設計したいのです。PHPで言えば"pg_cmdtuples"に該
当する機能は、libpgvbにあるのでしょうか?

何かいい方法がありましたら、教えてください。よろしくお願い致しま
す。

ps 現在はupdateする前にもう一度selectし、正常にselectできたら
updateを発行するようにしています。

津守 美弘
http://www27.cds.ne.jp/~zeos/




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