[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 メーリングリストの案内