zoukankan      html  css  js  c++  java
  • SQL Server中timestamp(时间戳)和rowversion(版本戳)

    SQL Server timestamp 数据类型与时间和日期无关。SQL Server timestamp 是二进制数字,它表明数据库中数据修改发生的相对顺序。实现 timestamp 数据类型最初是为了支持 SQL Server 恢复算法。每次修改页时,都会使用当前的 @@DBTS 值对其做一次标记,然后 @@DBTS 加1。这样做足以帮助恢复过程确定页修改的相对次序,但是 timestamp 值与时间没有任何关系。

    @@DBTS 返回当前数据库最后使用的时间戳值。当带有 timestamp 列的行被插入或更新时,会产生一个新的时间戳值,如果是多行,会产生多个连续的时间戳值。

    select @@DBTS 

    适用场景:

    通过timestamp字段查询变更数据,假如上次保存的时间戳的值是:0x0000000000163E30,那么我们通过下面的SQL脚本就能获取到这个时间戳之后变更的记录,获取到这里数据就可以更新内存数据了

    timestamp 与 rowversion 

    timestamp 与 rowversion 二者是 SQL Server 中的数据类型,二者是同义词,就是说二者的数据类型是完全一样的。

    在企业管理器中,我们只能选择 timestamp 作为列名,但在 T-SQL 中(比如查询分析器),我们既可以用 timestamp,也可以用 rowversion。

    那么在 T-SQL 中,我们该用哪个呢,该用 rowversion。因为微软定义的 timestamp 与 ISO 的 SQL-92 中定义的 timestamp 是不一样的,所以微软也建议在用 CREATE TABLE、CREATE PROCEDURE 或 DECLARE @variable 这类数据定义语言 (DDL) 语句,使用 rowversion,而不是 timestamp。

    微软可能会在今后的版本中删除 timestamp,不过到目前为止,包括 SQL Server 2008,timestamp 都还没有被删除。

    另外,要查看关于更多 SQL Server 的同义词,请参见在 MSDN 上的数据类型同义词 (Transact-SQL)

    注意事项:

    1. 每个数据库都有一个计数器,当对数据库中包含 timestamp 列的表执行插入或更新操作时,该计数器值就会增加。 该计数器是数据库时间戳;

    2. 一个表只能有一个 timestamp 列;

    3. 注意删除数据操作是没有办法记录时间戳的,所以你删除记录的逻辑应该是用一个字段标识这行记录已经被删除;

    4. 这一属性使 timestamp 列不适合作为键使用,尤其是不能作为主键使用;

    5. 如果该列属于索引键,则对数据行的所有更新还将导致索引更新;

    6. 若要返回数据库的当前时间戳值:SELECT @@DBTS

    7. 在 DDL 语句,请尽量使用 rowversion 而不是 timestamp,在SSMS设计表的时候是没有rowversion数据类型的;

    8. 在 CREATE TABLE 或 ALTER TABLE 语句中,不必为 timestamp 数据类型指定列名,如果不指定列名,则 Microsoft SQL Server 数据库引擎将生成 timestamp 列名;但 rowversion 同义词不具有这样的行为。 在使用 rowversion 时,必须指定列名。

    9. 不可为空的 rowversion 列在语义上等同于 binary(8) 列。 可为空的 rowversion 列在语义上等同于 varbinary(8) 列。

     
    **************转摘:https://www.cnblogs.com/smallidea/p/4627020.html
  • 相关阅读:
    Scrum学习总结
    1330. 翻转子数组得到最大的数组值
    LeetCode 中等题解(4)
    LeetCode 中等题解(3)
    LeetCode 中等题解(2)
    LeetCode 中等题解(1)
    【暑期实习】计算机视觉岗问题整理-腾讯
    【暑期实习】计算机视觉岗问题整理-快手
    【暑期实习】计算机视觉岗问题整理-阿里
    Leetcode 1329. 将矩阵按对角线排序 题解
  • 原文地址:https://www.cnblogs.com/linybo/p/10488446.html
Copyright © 2011-2022 走看看