【質問】ASP.NETスレ ..
[
2ch
|
▼Menu
]
■コピペモード
□
スレを通常表示
□
オプションモード
□このスレッドのURL
■項目テキスト
571:nobodyさん 08/05/31 17:24:10 ありがとうございます。 572:nobodyさん 08/06/01 18:04:07 排他制御について質問です。 一覧表示->更新処理が行える画面なのですが、 ユーザーAとBが同時に一覧を取得して、先にAがあるレコードを更新した場合 Bはもう一度一覧を取得し直さないと更新が行えないようにしたいです。 現在はSqlCommandのTransactionを利用して以下のような流れです。 1.更新前処理で更新対象行のレコードから、全項目を取得 2.取得した項目をキーとしてSELECT実行 3.存在ありならば更新がかかっていないとみなしてUPDATE->Commit 存在なしならば他から更新されたとみなしてRollback->更新を促すメッセージ表示 GridViewのUpdateメソッド、およびテーブルにDateTimeの列を追加等が 出来ない環境なのですが、他に良い案や定石などありますでしょうか。 なお、同時更新は滅多に起こることのない環境です。 573:nobodyさん 08/06/01 21:17:02 >>572 レコードにバージョンを表すフィールド(TimeStamp, 最終更新日時, あるいはただの連番)を追加するか、 全フィールドを比較するか以外に、オプティミスティック同時実行制御を行う方法なんてないんじゃない? GridViewのUpdateメソッドも、デフォルト状態では結局のところ全フィールドの比較を内部的に実行していたと思う どうしてもそのテーブルを変更できないなら、別テーブルに同じ主キー貼ったものを切り出して、バージョンを表すフィールドを追加して、更新系の画面では元のテーブルとバージョンテーブルをチェック&更新するようにするとか
次ページ
最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
レスジャンプ
mixiチェック!
Twitterに投稿
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch
5060日前に更新/244 KB
担当:undef