时间戳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=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)
>更多相关文章
- 10-26Whitewidow SQL漏洞扫描工具演示
- 10-26SQL黑客注入防御与绕过的多种姿势
- 12-23SQLServer数据库操作总结(sql语法的使用)
- 12-21C#连接Sqlite
- 12-21ORACLE数据库学习之SQL性能优化详解
- 12-21解决SQLSERVER2008数据库日志文件占用硬盘空间问题
首页推荐
佛山市东联科技有限公司一直秉承“一切以用户价值为依归
- 01-11全球最受赞誉公司揭晓:苹果连续九年第一
- 12-09罗伯特·莫里斯:让黑客真正变黑
- 12-09谁闯入了中国网络?揭秘美国绝密黑客小组TA
- 12-09警示:iOS6 惊现“闪退”BUG
- 12-05亚马逊推出新一代基础模型 任意模态生成大模
- 12-05OpenAI拓展欧洲业务 将在苏黎世设立办公室
- 12-05微软质疑美国联邦贸易委员会泄露信息 督促其
- 12-05联交所取消宝宝树上市地位 宝宝树:不会对公
- 12-04企业微信致歉:文档打开异常已完成修复
相关文章
24小时热门资讯
24小时回复排行
热门推荐
最新资讯
操作系统
黑客防御