PB 電子会議室

コメント

発言No. 更新日 題名(クリックすると発言内容と関連するコメントが表示されます)
10833 00/03/27 18:22:25 RE(11):特定の更新結果だけ Rollback したいんです。(ゴミレス) By Taka
10831 00/03/27 13:34:15 RE(10):特定の更新結果だけ Rollback したいんです。(ゴミレス) By ryochan
10829 00/03/27 11:30:40 RE(9):特定の更新結果だけ Rollback したいんです。(ゴミレス) By HAL
10828 00/03/27 11:25:30 RE(8):特定の更新結果だけ Rollback したいんです。 By てとらぽっと
10827 00/03/27 11:02:36 RE(7):特定の更新結果だけ Rollback したいんです。(ゴミレス) By Taka
10822 00/03/27 09:01:50 RE(6):特定の更新結果だけ Rollback したいんです。 By HAL
10820 00/03/24 23:36:18 RE(5):特定の更新結果だけ Rollback したいんです。 By Taka
10818 00/03/24 21:49:27 RE(4):特定の更新結果だけ Rollback したいんです。 By M.M
10817 00/03/24 21:22:24 RE(3):特定の更新結果だけ Rollback したいんです。 By HAL
10816 00/03/24 21:45:36 RE(2):特定の更新結果だけ Rollback したいんです。 By ryochan
10815 00/03/24 20:10:32 RE(1):特定の更新結果だけ Rollback したいんです。 By Mika★
10812 00/03/24 17:13:30 特定の更新結果だけ Rollback したいんです。 By HAL

カテゴリ:スクリプトの記述
日付:2000年03月24日 23:36 発信者:Taka
題名:RE(5):特定の更新結果だけ Rollback したいんです。

HALさん、こんばんは。

>実現したいのは、明細の1行目から最終行までのループを1回のみ実行し、
>その中で更新失敗した UPDATE 結果だけを ROLLBACK して伝票単位で COMMIT or ROLLBACK を
>1回だけ実行する。かつ、エラーの行?をメッセージ表示するというものなんです。
>(なんだか無理なような気が...)

ループの中で1行ずつ UPDATE(埋め込みSQL)するんですよね?
エラーになった行はほっといて、次の行をUPDATEし、ループの外でまとめてCOMMITしても問題ないのでは?
UPDATEに失敗している訳ですから、COMMIT文を発行してもそれは対象外になりますし、
行ロックも開放されるのではないでしょうか?

特別に ROLLBACKしなければならないケースは、その明細テーブルに BEFORE行トリガーが付いており、
そのトリガーの中で他のテーブルを更新している 等の場合です。
この場合でしたら、1行のUPDATE文でエラーになったらROLLBACKする必要がありますね。

ちなみに、ループの中でUPDATEに成功した行は、DWバッファの行ステータスを NotModified! に
変更しておきましょう。(ん?DWのUpdate関数を使わなければ関係ないか…)


付加情報:

PowerBuilder Version (記載なし)

Client SoftWare

OS (記載なし)
DBMS (記載なし)
Browser (記載なし)

Server SoftWare

OS (記載なし)
DBMS (記載なし)
WebServer (記載なし)

PowerSpaceの運営は、パワーフューチャー株式会社が行っております。
Copyright © 2013 Power Future Co., Ltd.