SQL Server の timestamp型
SQL Serverの「timestamp」型は他のDBをちょっと違っていて日付や時間を保存する型ではありません。 テーブルの行のバージョンを管理・記録するため に使います。
timestamp型 のレコードを登録・更新してみる
実際に試してみます。
--テーブル作成
CREATE TABLE [dbo].[T_SEITO](
[ID] INT NOT NULL IDENTITY(1,1) PRIMARY KEY,
[Name] char(20) NOT NULL ,
[ROW_VERSION] timestamp ,
)
-- 初期データ登録
insert into [T_SEITO](Name) select '犬塚';
--更新前
SELECT * FROM T_SEITO
--更新
update T_SEITO
set Name = '猫塚'
where ID = 1
--更新後
SELECT * FROM T_SEITO
timestamp型のカラム(ROW_VERSION)を更新していないのにROW_VERSIONが更新されています。この特徴を利用してデータが更新されたかどうか判断するのに使用できます。
timestamp型 の値は更新出来ない
timestamp型の値はレコードを登録したり更新したりすと全部自動で適切な値を設定してくれますが、クエリで更新しようとするとエラーになります。
エラー発生
メッセージ 272、レベル 16、状態 1、行 24
timestamp 列は更新できません。
update T_SEITO
set [ROW_VERSION] = 0x0000000000002715
where ID = 1
コメント