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月23日 16:18 発信者:aki
題名:RE(4):一覧画面におけるトランザクション処理について

まことさん こんにちは。

>基本的な質問ですみませんが、教えて下さい。(^^;)
>「キーカラムのみ」を選択する時とは、どのようなソフト作成や画面に有効なのでしょうか?
>「キーカラムと更新可能カラム」でないと、登録の判断ミスや作業者間の認識にズレが生じる
と思います。

これは、DWに対してUPDATE関数を宣言したときに自動生成されるUPDATE文のWHERE句に影響
されるものです。
普通の更新であればWHERE句にすべき項目は、プライマリキーだけでいいわけですから前者とな
るわけです。

これに対して後者や「キーカラムと修正カラム」は更に排他条件を厳しくしたものと言えます。
これらは、自分が検索してから更新するまでの間に第三者が更新している場合は、更新を取り消
すという風に使われます。

>>どうしてもデータ入力を無駄にしたくないとすれば、排他制御のロックレベルを行単位にし
>>SELECTする前に明示的に排他開始を宣言する必要があると思います。
>おっしゃる通り、変更された行を確認しながら、1行ずつupdate()で確認しないといけない
と思います。
>で、更新できたものはcommitし、更新できなかった行はRollBackして色変更し表示したい。

本来、排他制御は、開始と終了を宣言する必要があります。
開始(BEGIN WORK)を宣言してから、更新作業を行い、終了(COMMIT/ROLLBACK)を宣言する
ことで開始から終了までの処理を有効/無効として決定するものです。

私も確認したわけではないので推測ですが、DWはUPDATE関数の開始時に開始を宣言し、自動
COMMITの場合はその最後にCOMMIT、手動COMMITの場合は、埋め込みでCOMMITを明示することで
排他が行われていると思います。

こう考えるとDWで行単位でCOMMIT/ROLLBACKを変えるということは出来ないと思います。

>●一覧で、排他制御のロックレベルを行単位にするって事はできるんですか?

PowerBuilderではやったことがないですが、行レベルでロックするとSQL文で宣言し(コマン
ドは忘れました)、BEGIN WORKを宣言することで以降検索した行に対してロックがかかります

付加情報:

PowerBuilder Version (記載なし)

Client SoftWare

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

Server SoftWare

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

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