トップページに戻る
次のSQLパズルへ
前のSQLパズルへ
10-58 時刻印法による楽観的ロック
SQLパズル
table1058
name1 name2 更新時間
----- ----- --------
aaaaa bbbbb sysdate
時刻印法による楽観的ロックを実装する
データ作成スクリプト
create table table1058(
name1 char(5),
name2 char(5),
更新時間 date);
insert into table1058 values('aaaaa','bbbbb',sysdate);
commit;
SQL
--■■■データ取得時■■■
select name1,name2,sysdate as データ参照時間
from table1058
--■■■更新時■■■
update table1058
set name1 = 'ccccc',
name2 = 'ddddd',
更新時間 = sysdate
where 更新時間 <= &データ参照時間;
解説
データ取得時のsysdateと、
更新時の、レコードの更新時間を比較してます
rowDependencies指定でcreateしたテーブルなら、
SCNを使った、多バージョン法もあります