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.  D - 粉碎叛乱F - 其他起义

    D - 粉碎叛乱 Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u Submit Sta ...

  2. 2-06. 数列求和(20)(ZJUPAT 数学)

    题目链接:http://pat.zju.edu.cn/contests/ds/2-06 给定某数字A(1<=A<=9)以及非负整数N(0<=N<=100000).求数列之和S ...

  3. Handler总结

    一.整体工程图 二.activity_handler.xml <?xml version="1.0" encoding="utf-8"?> < ...

  4. Android:源码环境编译自定义的APP到ROM(System Image)中

    有时候我们需要在源码环境中增加自己的应用或模块,随ROM一起发布. 下面讲述相关步骤: 1. 首先可以在SDK环境下进行编码设计(如果你的APP不涉及到emulator无法模拟的硬件的话) 也可以参考 ...

  5. win8系统特别慢的基本判断方法

    单位有6,7台同事的电脑是win8.1.不知道什么原因,两位领导反映电脑特别慢. 我查看了一下,确实很慢. 虽然知道win8系统不好,但也不至于这样. 打开任务管理器,看了一下cpu和内存的使用状态, ...

  6. linux内核代码container_of

    它的作用显而易见,那就是根据一个结构体变量中的一个域成员变量的指针来获取指向整个结构体变量的指针. typedef unsigned int __kernel_size_t; typedef __ke ...

  7. c++ , const对象中的变量不能被修改

    const对象中的变量不能被修改,即使const对象中的函数也不能修改该对象中的变量值 #include <iostream> using namespace std; //------- ...

  8. UIAlertView、UIActionSheet兼容iOS8

    链接地址:http://blog.csdn.net/nextstudio/article/details/39959895?utm_source=tuicool 1.前言 iOS8新增了UIAlert ...

  9. BZOJ AC300题留念

  10. javascript (string 部分)

    <html> <body> <script type="text/javascript"> var str="ab:cd:ef:gh& ...