时间戳timestamp
1时间戳
数据库中自动生成的唯一的 二进制的数据,通常用作给数据表的行添加版本戳的机制。
2时间戳的作用及应用
多用户同时修改一行数据,最后提交修改的数据会覆盖前面提交的数据,造成前面的更新丢失。
若将一个表中更新的数据Copy到另外一个表,就可以根据时间戳确认哪些数据是更新过的数据。
3实例
1新建一个含有时间戳列的表tb_Class;
2插入若干条数据,并执行SQL查询:
select * from tb_Class;
3执行下面的SQL查询:
select ts from tb_Class where classid=1 update tb_Class set teacher='ly' where classid=1 select ts from tb_Class where classid=1
从结果可以看出:更新行数据前后的时间戳的值发生改变。
4防止更新丢失的实例(来自于网络)
declare table tmp(a varchar(10),b rowsversion) insert into tmp(a) values( 'abc')
事务A:
declare @rv rowversion select @rv=b from tmp where a='abc' waitfor delay '00:00:05' update tmp set a='xyz' where b=@rv
事务 B :
update tmp set a='aaa' where b=@rv
事务
A
在执行完毕后会发现并没有将
'aaa'给抹去,这样就防止了丢失更新的现象。
5补充
不推荐使用timestamp语法。后续版本的MicrosoftSQLServer将删除该功能。请避免在新的开发工作中使用该功能,并着手修改当前还在使用该功能的应用程序。推荐使用rowversion。(微软MSDN)
优质内容筛选与推荐>>