楽観ロックの方法として、テーブルアダプタなどが自動生成するSQLはこんなの(aカラムをキーとして)
create taba
(
a int primary key,
b nvarchar(200),
c nvarchar(max)
)
select a,b,c from taba
update taba a=@a, b=@b, c=@c where a=@original_a and b=@original_b and c=@original_c
これではパフォーマンスがあがりません。
whereに文字列フィールドを持ってきちゃだめってのはみんな感覚的に理解できますよね。
こういう場合更新カウンタをtimestampで作成します。
create taba
(
a int primary key,
b nvarchar(200),
c nvarchar(max),
updatecol timestamp
)
update taba a=@a, b=@b, c=@c where a=@original_a and updatecol=@original_updatecol
ちゃんとタイムスタンプ列を作るだけで追随してくれます。
こうしておくと、パフォーマンスが稼げるし、同一内容での更新を防げます。(aからbにかえてaに戻した人が裏にいるときに、最初のaを基準としたトランザクションの防止。)