时间戳timestamp

浏览:
字体:
发布时间:2013-12-09 23:23:38
来源:

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=1update tb_Class set teacher='ly' where classid=1select 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 语法。 后续版本的 Microsoft SQL Server 将删除该功能。请避免在新的开发工作中使用该功能,并着手修改当前还在使用该功能的应用程序。推荐使用rowversion。(微软MSDN)

 

 

>更多相关文章
24小时热门资讯
24小时回复排行
资讯 | QQ | 安全 | 编程 | 数据库 | 系统 | 网络 | 考试 | 站长 | 关于东联 | 安全雇佣 | 搞笑视频大全 | 微信学院 | 视频课程 |
关于我们 | 联系我们 | 广告服务 | 免责申明 | 作品发布 | 网站地图 | 官方微博 | 技术培训
Copyright © 2007 - 2024 Vm888.Com. All Rights Reserved
粤公网安备 44060402001498号 粤ICP备19097316号 请遵循相关法律法规
');})();