分類:[データベース全般]
SQLServerの排他制御に関して詳しくなく、
質問させてください。
アプリ1は処理開始時に下記1を実行します。
アプリ1は処理を終了すると、
下記2を実行します。
※下記1から3は、それぞれ1トランザクション内で実行しているものとします。
アプリ2は下記3のように更新処理を行うのですが、
table2のa='0'のときだけ更新処理を行いたいため、
下記3では、副問い合わせを用いて
条件に加えています。
問題ないでしょうか?
他テーブル間の副問い合わせであるため、
下記3の実行中に下記1が入り込む余地はあるのでしょうか?
1.アプリ1の処理開始時
update table2
set a = '1'
※1レコードのみの前提
2.アプリ1の処理終了時
update table2
set a = '0'
※1レコードのみの前提
3.アプリ2の更新処理
update table1
set col1 = 'up'
where
col2 = 'A'
and
(
select a from table2
) = '0'
|