中の技術日誌ブログ

C#とC++/CLIと
VBと.NETとWindowsで戯れる
 

目次

Blog 利用状況

ニュース

自己紹介

東京でソフトウェアエンジニアをやっています。
お仕事大募集中です。
記事執筆や、講師依頼とかでも何でもどうぞ(*^_^*)
似顔絵 MSMVPロゴ
MSMVP Visual C# Since 2004/04-2013/03

記事カテゴリ

書庫

日記カテゴリ

00-整理

01-MSMVP

タイムスタンプ列

楽観ロックの方法として、テーブルアダプタなどが自動生成する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を基準としたトランザクションの防止。)

投稿日時 : 2007年6月4日 11:54

コメントを追加

# re: タイムスタンプ列 2007/06/04 12:26 ぽぴ王子

update ...(中略)... updatecol=@updatecol
みたいなのも必要かも。

# re: タイムスタンプ列 2007/06/04 13:15 trapemiya

timestampって名前が良くないと思うのは私だけだろうか?なんか日付時刻型のような錯覚に陥ってしまう。

# timestamp 2007/06/04 15:35 ぽぴ王子の人生プログラミング中

timestamp

タイトル
名前
URL
コメント