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的更多相关文章

  1. mysql的时间戳timestamp精确到小数点后六位

    1.mysql的时间戳timestamp精确到小数点后六位. 公司业务使用到Greenplun数据库,根据查询的时间戳来不断的将每个时间段之间的数据,进行数据交换,但是今天发现,mysql的时间戳没有 ...

  2. sql server时间戳timestamp

    sql server时间戳timestamp 在SQL Server中联机丛书是这样说的: SQL Server timestamp 数据类型与时间和日期无关.SQL Server timestamp ...

  3. 10_时间戳timeStamp 和 时间 time 转换, 根据时间节点倒计时

    1: 时间戳 timeStamp 获取的几种方法及其优劣, 第一种只能精确到秒, 故不推荐使用, 最最常用的也是最官方的是第三种, 通过原型方法进行调用获取精确到毫秒数 : var timestamp ...

  4. 时间戳TimeStamp处理

     我获得这个时间戳是得想除以1000再处理的,看看你们的需要先除多少再处理 //时间戳处理 NSInteger time = timeStamp / 1000; NSNumber *timer = [ ...

  5. 前端时间戳timestamp相关总结:

    一.JavaScript获取当前时间戳的方法 第一种方法:var timestamp = Date.parse(new Date());结果:1280977330000 第二种方法:var times ...

  6. SQL Server数据库(时间戳timestamp)类型 (转载)

    timestamp介绍 公开数据库中自动生成的唯一二进制数字的数据类型. timestamp 通常用作给表行加版本戳的机制. 存储大小为 8 个字节. 不可为空的 timestamp 列在语义上等价于 ...

  7. SQL Server数据库(时间戳timestamp)类型

    1.公开数据库中自动生成的唯一二进制数字的数据类型. 2.timestamp 通常用作给表行加版本戳的机制. 3.存储大小为 8 个字节. 不可为空的 timestamp 列在语义上等价于 binar ...

  8. mysql 查询时间戳(TIMESTAMP)转成常用可读时间格式

    from_unixtime()是MySQL里的时间函数 date为需要处理的参数(该参数是Unix 时间戳),可以是字段名,也可以直接是Unix 时间戳字符串 后面的 '%Y%m%d' 主要是将返回值 ...

  9. oracle 时间戳TIMESTAMP

    //数据库 UPDATETIMESTAMP TIMESTAMP(6) //dto /** 更新时间戳 **/ private String updatetimestamp; //dao //插入操作 ...

随机推荐

  1. CUDA samples 第三章 sample reference 概况

    示例代码分为下列几类: 1.   Simple Reference 基础CUDA示例,适用于初学者, 反应了运用CUDA和CUDA runtime APIs的一些基本概念. 2.   Utilitie ...

  2. 小程序员在android移动应用上的赚钱经历

    先说说我自己吧,二线城市(以外包为主)的小程序员,工作多年了,月收入5-6K.主要从事asp.net web网站开发,java,c++,php,ruby都懂一些,属于那种对问题不求甚解型,爱好电脑游戏 ...

  3. centos下彻底删除MYSQL 和重新安装MYSQL

    在Centos6.3上装了一个Mysql,结果mysql库被我玩丢了(这里面管理了mysql的权限).现在采用先彻底删除,然后重新安装Mysql. 1 删除Mysql yum remove  mysq ...

  4. route-over VS mesh-under

    近期在网上看到一篇专门介绍route-over和Mesh-under的论文,介绍的比較具体: ip=183.63.119.35&id=1582643&acc=ACTIVE%20SERV ...

  5. iOS UIView非常用方法及属性详解

    在调用视图的 Quartz  调用都可以正确地在视图中描画.   视图对象通过 bounds .和 center  属 性声明来跟踪自己的大小和位置.frame 属性包含一个矩形,即边框矩形,用于指定 ...

  6. ViewPager实现启动引导页面(个人认为很详细)

    效果如图: 启动页面是一张图片+延时效果,这里就不给出布局文件了. WelcomeActivity分析:在启动页面检测是否是第一次运行程序,如果是,则先跳转到引导界面的Activity——AndyVi ...

  7. Fundamental types

    Fundamental types void type boolean type character types integer types Modifiers signedness size Pro ...

  8. iOS7,8 presentViewController 执行慢

    解决办法: 1, 使用GCD用主线程跳转 dispatch_async(dispatch_get_main_queue(), ^{ //跳转代码 ... }); 2, 召唤主线程, 使用perform ...

  9. svn笔记4属性Properties

    我们已经详细讲述了Subversion存储和检索版本库中不同版本的文件和目录的细节,并且用了好几个章节来论述这个工具的基本功能.如果对于版本化的支持到此为止,从版本控制的角度来看Subversion已 ...

  10. eclipse中build workspace的相关优化

    网上流传的各种的eclipse的调优的方法都大同小异,但是调优的基本上针对eclipse或者myclipse的本身,比如关掉validate和启动项,文件拼写,和自动构建等,调过之后,等个eclips ...