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 (記載なし)
Copyright © 2013 Power Future Co., Ltd.