时间戳timestamp


1时间戳

数据库中自动生成的唯一的 二进制的数据,通常用作给数据表的行添加版本戳的机制。

  • timestamp与时间和日期无关。
  • timestamp存储大小为8字节。
  • 一个数据表只能有一个timestamp列。
  • 每次修改或者插入包含timestamp列的行时,就会在timestamp列中插入增量数据库时间戳值。
  • timestamp列不适合于作为键使用,因为任何更新都会更改timestamp的值。

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

优质内容筛选与推荐>>
1、WordPress插件入口菜单创建的位置代码
2、最大正方形
3、Microsoft .NET 框架常见问题
4、国庆二游塘朗山
5、iOS开发之自定义画板


长按二维码向我转账

受苹果公司新规定影响,微信 iOS 版的赞赏功能被关闭,可通过二维码转账支持公众号。

    阅读
    好看
    已推荐到看一看
    你的朋友可以在“发现”-“看一看”看到你认为好看的文章。
    已取消,“好看”想法已同步删除
    已推荐到看一看 和朋友分享想法
    最多200字,当前共 发送

    已发送

    朋友将在看一看看到

    确定
    分享你的想法...
    取消

    分享想法到看一看

    确定
    最多200字,当前共

    发送中

    网络异常,请稍后重试

    微信扫一扫
    关注该公众号