当前位置:  数据库>sqlserver

Sqlserver timestamp数据类使用介绍

    来源: 互联网  发布时间:2014-10-04

    本文导语:  在SQL Server中联机丛书是这样说的: SQL Server timestamp 数据类型与时间和日期无关。SQL Server timestamp 是二进制数字,它表明数据库中数据修改发生的相对顺序。实现 timestamp 数据类型最初是为了支持 SQL Server 恢复算法。每次修改...

在SQL Server中联机丛书是这样说的:
SQL Server timestamp 数据类型与时间和日期无关。SQL Server timestamp 是二进制数字,它表明数据库中数据修改发生的相对顺序。实现 timestamp 数据类型最初是为了支持 SQL Server 恢复算法。每次修改页时,都会使用当前的 @@DBTS 值对其做一次标记,然后 @@DBTS 加1。这样做足以帮助恢复过程确定页修改的相对次序,但是 timestamp 值与时间没有任何关系。
我用口水话解释一下便于理解:
我们知道数字类型有个“标识”属性,设置好“标识种子”、“标识递增量”,每增加一条记录时,这个字段的值就会在最近的一个标识值基础上自动增加,这样我们可以知道哪些记录是先添加的,哪些记录是后添加的,但是我们无法知道哪些记录修改过。timestamp这个类型的字段呢,每增加一条记录时,它会在最近的一个时间戳基础上自动增加,当修改某条记录时,它也会在最近的一个时间戳基础上自动增加,所以我们就知道哪些记录修改过了。

timestamp 这种数据类型表现自动生成的二进制数,确保这些数在数据库中是唯一的。timestamp 一般用作给表行加版本戳的机制。存储大小为 8 字节。
注释
Transact-SQL timestamp 数据类型与在 SQL-92 标准中定义的 timestamp 数据类型不同。SQL-92 timestamp 数据类型等价于 Transact-SQL datetime 数据类型。
Microsoft® SQL Server™ 将来的版本可能会修改 Transact-SQL timestamp 数据类型的行为,使它与在标准中定义的行为一致。到那时,当前的 timestamp 数据类型将用 rowversion 数据类型替换。
Microsoft® SQL Server™ 2000 引入了 timestamp 数据类型的 rowversion 同义词。在 DDL 语句中尽可能使用 rowversion 而不使用 timestamp。rowversion 受数据类型同义词行为的制约。有关更多信息,请参见数据类型同义词。
在 CREATE TABLE 或 ALTER TABLE 语句中,不必为 timestamp 数据类型提供列名:
CREATE TABLE ExampleTable (PriKey int PRIMARY KEY, timestamp)如果没有提供列名,SQL Server 将生成 timestamp 的列名。rowversion 数据类型同义词不具有这样的行为。指定 rowversion 时必须提供列名。
一个表只能有一个 timestamp 列。每次插入或更新包含 timestamp 列的行时,timestamp 列中的值均会更新。这一属性使 timestamp 列不适合作为键使用,尤其是不能作为主键使用。对行的任何更新都会更改 timestamp 值,从而更改键值。如果该列属于主键,那么旧的键值将无效,进而引用该旧值的外键也将不再有效。如果该表在动态游标中引用,则所有更新均会更改游标中行的位置。如果该列属于索引键,则对数据行的所有更新还将导致索引更新。
不可为空的 timestamp 列在语义上等价于 binary(8) 列。可为空的 timestamp 列在语义上等价于 varbinary(8) 列。

Microsoft SQL Server 用两个 4 字节的整数内部存储 datetime 数据类型的值。第一个 4 字节存储 base date(即 1900 年 1 月 1 日)之前或之后的天数。基础日期是系统参考日期。不允许早于 1753 年 1 月 1 日的 datetime 值。另外一个 4 字节存储以午夜后毫秒数所代表的每天的时间。

代码如下:

@@DBTS(SELECT @@DBTS)
为当前数据库返回当前 timestamp 数据类型的值。这一 timestamp 值保证在数据库中是唯一的。
语法
@@DBTS
返回类型
varbinary
注释
@@DBTS

返回当前数据库最后所使用的时间戳值。当带有 timestamp 列的一行被插入或更新时,会产生一个新的时间戳值。

    
 
 

您可能感兴趣的文章:

  • !!!在Java中如何取得Resultset中的datetime和timestamp字段?数据库是SQLServer
  • 如何使用JSP 连接SQLSERVER数据库,请不吝赐教!(在线等,急救!)
  • 使用cmd命令行窗口操作SqlServer的方法
  • 到什么地方去下载在jbuilder6.0中使用sqlserver2000的驱动程序呀?
  • 如何强制删除或恢复SQLServer正在使用的数据库
  • jsp连接sqlserver使用jdbc驱动时,class not found
  • 使用mongovue把sqlserver数据导入mongodb的步骤
  • sqlServer使用ROW_NUMBER时不排序的解决方法
  • 请问微软的SQLServer数据库可以在Linux系统环境中使用吗?
  • 深入SQLServer中ISNULL与NULLIF的使用详解
  • sqlserver 多库查询 sp_addlinkedserver使用方法(添加链接服务器)
  • sqlserver中delete、update中使用表别名和oracle的区别
  • sqlserver 局部变量的使用
  • 使用SqlBulkCopy时应注意Sqlserver表中使用缺省值的列
  • Linux环境中使用BIEE 连接SQLServer业务数据源
  • SQLSERVER分布式事务使用实例
  • ?那位大虾有jdbc2.0连接sqlserver的例子,不要使用jdbc-odbc桥,要用sqlserver2000jdbc驱动!大哥帮我一下吧!
  • NOSQL iis7站长之家
  • php使用pdo连接sqlserver示例分享
  • SQLSERVER全文目录全文索引的使用方法和区别讲解
  • 使用sqlserver存储过程sp_send_dbmail发送邮件配置方法(图文)
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 连接sqlserver的url是jdbc:microsoft:sqlserver://192.168.0.100:1433,他连那一个数据库呢?
  • (100分)用Microsoft jdbc Driver for sqlserver2000(type4)访问sqlserver2k的问题,help!
  • 通过SQLSERVER重启SQLSERVER服务和计算机的方法
  • 怎样用文JDBC for sqlserver访问SQLSERVER 数据库请大侠给出一个完整的程序代码
  • (100分)jdbc连接sqlserver 200出错.[SQLServer 2000 Driver for JDBC]Error establishing socket.
  • 如何连接sqlserver2000数据库
  • 深入JDBC sqlserver连接写法的详解
  • how to 连接到sqlserver2000?
  • 请问如何直接sqlserver?
  • SQLServer JDBC Driver
  • 在sqlserver2000时中文问题。
  • 设置密码保护的SqlServer数据库备份文件与恢复文件的方法
  • 简单实现SQLServer转MYSQL的方法
  • 求助!SQLServer2000 JDBC Driver 不能加载?
  • Resin+Jsp+Sqlserver2000的问题!在线等候!
  • applet用jdbc链接SQLServer 2000的问题
  • 请问连接SQLServer 的驱动器是什么呢?
  • jdbc:microsoft:sqlserver://localhost:1433;DatabaseNameOPTIONAL=webmail???
  • 如何用SQLServer2k-JDBC连接数据库?
  • shell脚本读取rrd文件将数据插入sqlserver数据库中


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3