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月22日 22:15 発信者:aki
題名:RE(1):一覧画面におけるトランザクション処理について
まことさん、こんばんは。
>DWの更新方法は、”キーカラムと更新可能カラム”にしています。
>DB:Oracle7.3
>
>上記の方法だと、先に更新ボタンを押した人の情報が登録され、後から更新ボタンを押した人
の情報は、
>”検索と更新の間に行が挿入されました”というメッセージが表示され登録できません。
>
>何が問題かというと、他の人が既にデータ(行)を変更している時に、参照されているデータ
(行)を画面
>上では変更(登録できない状態)できる為、既に入力したデータが無駄になるからです。
>(一覧で変更する時は、その影響範囲が広がるため、何とかしたい所なのです。)
このことは、排他制御をどのレベルまで考えるかによるとおもいます。
もし、プライマリキーを除くすべてのカラムに対し次々と更新かけたものをすべて可とするので
あれば、DWの更新方法を「キーカラムのみ」にする事で更新は可能になります。
#プライマリキーの変更はもちろん論外ですが
>●誰かがデータ(行)を変更(占有)した時点で、そのデータ(行)を変更できなくする事は
可能でしょうか?
> 「更新」ボタンを押す前に、他の人の占有を確認したい。
> (他の人が更新ボタンを押すか、画面を閉じた時点で占有を解除したい。)
この場合、”検索と更新の間に行が挿入されました”というメッセージが出てしまうのは、自分
より先に誰かが更新しCOMMITしてしまったためですから、この段階ではすでに占有という状態
はクリアされてしまっています。
どうしてもデータ入力を無駄にしたくないとすれば、排他制御のロックレベルを行単位にし、
SELECTする前に明示的に排他開始を宣言する必要があると思います。
もし、入力項目のフォーカスが変わったたびにチェックするとすると、そのたびにSELECTし、
更に内容の差分をチェックするぐらいのことをしなければならないと思います。
付加情報:
PowerBuilder Version (記載なし)
Client SoftWare
OS (記載なし)
DBMS (記載なし)
Browser (記載なし)
Server SoftWare
OS (記載なし)
DBMS (記載なし)
WebServer (記載なし)
Copyright © 2013 Power Future Co., Ltd.