sqlserver 时间戳

每次更新的时候,mssql都会自动的更新rowversion的值,若一行在读前与更新前的值前后不一致,就说明有其他的事务更新了此列,这样就可以不更新此列,

从而防止了丢失更新的情况。 例子 :
 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'给抹去,这样就防止了丢失更新的现象。
原文地址:https://www.cnblogs.com/hbhzz/p/3944073.html