PB 電子会議室

コメント

発言No. 更新日 題名(クリックすると発言内容と関連するコメントが表示されます)
1346 98/04/25 01:43:11 RE(7):FOR UPDATE(ORACLE限定)をつかったこともあります By Angel
1345 98/04/24 19:07:33 RE(6):FOR UPDATE(ORACLE限定)をつかったこともあります By aki
1333 98/04/24 09:13:08 RE(5):FOR UPDATE(ORACLE限定)をつかったこともあります By てとらぽっと
1328 98/04/23 16:18:30 RE(4):一覧画面におけるトランザクション処理について By aki
1318 98/04/23 11:24:24 RE(3):一覧画面におけるトランザクション処理について By まこと
1315 98/04/23 09:31:46 RE(2):詳細画面をポップアップさせて、その都度読み直す By てとらぽっと
1311 98/04/22 22:15:14 RE(1):一覧画面におけるトランザクション処理について By aki
1308 98/04/22 15:35:09 一覧画面におけるトランザクション処理について By まこと

カテゴリ:旧電子会議室
日付:1998年04月25日 01:43 発信者:Angel
題名:RE(7):FOR UPDATE(ORACLE限定)をつかったこともあります

皆さんこんばんわ。


>>ちなみにデータウィンドウペインタのSQL構文は FOR UPDATE に対応していないので、GUIを
>使わずに手で書きます。
>>それと NOWAIT を忘れずに付けなければなりません。

>この場合、デザインモードには戻せないんですよね?
>それと、DELETEされた場合はどういうふうに動作するんでしょうか?

現在のセッションが行をロックしているのでそのセッションからしかDELETEできません。
ほかのセッションでDELETE文を発行すれば、現在のセッションがCOMMIT/ROLLBACKするまで待って、
DELETEが実行されます。まぁ、現在のセッションでDELETEしてしまえば、ほかのセッションからのDELETEは
結果が0件ということではないでしょうか?

ちなみに私のところでは、FOR UPDATE NOWAIT をオプション設定できるデータウインドウ(ユーザオブジェクト)を用
意しました。また、Savepoint 対応版のトランザクションオブジェクトを用意しました。

> dw_test.retrieve() /*for update nowait対応版 */
>
> uo_sqlca.Savepoint() /* \"SAVEPOINT xxx\" をEXECUTE IMMEDIATEで発行する*/
> ret = dw_test.update()
> if ret = -1 then
>    uo_sqlca.rollback_to_savepoint() /* \"ROLLBACK to xxx\"をEXECUTE IMMEDIATEで発行する */
>    return
> end if
> /* xxx は内部でカウンタを利用し、一意な文字列にします。
>                     でないと、任意のポイントのrollback/commitができません*/

こんなかんじです。普通のことかもしれませんが、参考になれば...ちなみに、Oracleです。


付加情報:

PowerBuilder Version (記載なし)

Client SoftWare

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

Server SoftWare

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

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