时间戳timestamp
2013-12-02 22:19
337 查看
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 语法。 后续版本的 Microsoft SQL Server 将删除该功能。请避免在新的开发工作中使用该功能,并着手修改当前还在使用该功能的应用程序。推荐使用rowversion。(微软MSDN)
数据库中自动生成的 唯一的
二进制的数据,通常用作给数据表的行添加版本戳的机制。
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 语法。 后续版本的 Microsoft SQL Server 将删除该功能。请避免在新的开发工作中使用该功能,并着手修改当前还在使用该功能的应用程序。推荐使用rowversion。(微软MSDN)
相关文章推荐
- oracle SCN跟TIMESTAMP之间转换
- MySQL timestamp自动更新时间分享
- PHP时间戳使用实例代码
- 把时间戳转换为日期格式的js代码
- Sqlserver timestamp数据类使用介绍
- 时间戳转换为时间 年月日时间的JS函数
- mysql多个TimeStamp设置的方法解读
- php strtotime 函数UNIX时间戳
- php 获取今日、昨日、上周、本月的起始时间戳和结束时间戳的方法
- 使用php 获取时间今天明天昨天时间戳的详解
- Java中Date,Calendar,Timestamp的区别以及相互转换与使用
- Python时间戳与时间字符串互相转换实例代码
- mysql时间戳转成常用可读时间格式的两种方法
- iOS NSDate中关于夏令时的坑
- mysql复习笔记_datetime、timestamp
- DATETIME, DATE和TIMESTAMP
- PHP CodeBase: 将时间显示为“刚刚”“n分钟/小时前”等
- PHP实现星期X转换时间戳函数
- Java Timestamp 类的使用(转)
- PHP时间戳计算时间间隔