如何在Sqlserver中使用时间戳数据类

分类:编程技术 时间:2024-02-20 15:28 浏览:0 评论:0
0
本文介绍如何在Sqlserver中使用时间戳数据类。内容非常详细。有兴趣的朋友可以参考一下。希望对大家有所帮助。

在 SQL Server 联机丛书中这样说:SQL Server 时间戳数据类型与时间和日期无关。 SQL Server 时间戳是二进制数字,指示数据库中数据修改发生的相对顺序。时间戳数据类型最初是为了支持 SQL Server 恢复算法而实现的。每次修改页面时,都会用当前的@@DBTS值标记一次,然后@@DBTS加1。这足以帮助恢复进程确定页面修改的相对顺序,但是时间戳值有与时间无关。为了便于理解,我用语言来解释一下:我们知道数字类型有一个“标识”属性。设置“识别种子”和“识别增量量”t”。每次添加一条记录时,该字段的值都会在最新标识中,根据该值自动增加,这样我们就可以知道哪些记录是先添加的,哪些记录是后添加的,但是我们无法知道哪些记录被修改了,对于时间戳类型的字段,每增加一条记录,都会根据最近的时间戳自动增加,当一条记录被修改时,也会根据最近的时间戳自动增加。最近的时间戳,这样我们就知道哪些记录被修改了。时间戳这种数据类型表示自动生成的二进制数字,确保这些数字在数据库中是唯一的。时间戳通常用作版本标记表行的机制。存储大小为8 个字节。注意 Transact-SQL 时间戳数据类型与 SQL-92 标准中定义的时间戳数据类型不同。SQL-92 时间戳数据类型相当于 Transact-SQL 日期时间数据类型ta型。 Microsoft® SQL Server™ 的未来版本可能会修改 Transact-SQL 时间戳数据类型的行为,以符合标准中定义的行为。此时,当前时间戳数据类型将替换为 rowversion 数据类型。 Microsoft® SQL Server™ 2000 引入了时间戳数据类型的 rowversion 同义词。尽可能使用 rowversion 而不是时间戳。 rowversion 受数据类型同义词行为的影响。有关详细信息,请参阅数据类型同义词。在 CREATE TABLE 或 ALTER TABLE 语句中,不必提供时间戳数据类型的列名: CREATE TABLE ExampleTable (PriKey int PRIMARY KEY, timestamp) 如果未提供列名,SQL Server 会生成时间戳的列名。 rowversion 数据类型同义词没有这样的行为。指定 rowversion 时需要列名。一张表只能有一个时间戳列。每次插入或更新包含时间戳列的行时,值 in 更新时间戳列。此属性使得时间戳列不适合用作键,尤其是用作主键。对行的任何更新都会更改时间戳值,从而更改键值。如果该列属于主键,则旧键值将无效,并且引用旧值的外键将不再有效。如果在动态游标中引用该表,则所有更新都会更改游标中行的位置。如果该列属于索引键,则对数据行的所有更新也会引起索引更新。不可为空的时间戳列在语义上等同于binary(8) 列。可空时间戳列在语义上等同于 varbinary(8) 列。 Microsoft SQL Server 在内部将日期时间数据类型值存储为两个 4 字节整数。前 4 个字节存储基准日期(即 1900 年 1 月 1 日)之前或之后的天数。基准日期是系统参考日期。早于 1 月 1 日的日期时间值,第1753章 不允许。另外 4 个字节存储午夜后的时间(以毫秒为单位)。 复制代码 代码如下: @@DBTS(SELECT @@DBTS) 返回当前数据库的当前时间戳数据类型的值。该时间戳值保证在数据库中是唯一的。语法 @@DBTS 返回类型 varbinary 注释 @@DBTS

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

分享一下如何在Sqlserver中使用时间戳数据类就到这里了,希望以上内容能够给大家带来一些帮助,可以学到更多的知识。如果您觉得文章不错,可以分享出去,让更多的人看到。

1. 本站所有资源来源于用户上传或网络,仅作为参考研究使用,如有侵权请邮件联系站长!
2. 本站积分货币获取途径以及用途的解读,想在本站混的好,请务必认真阅读!
3. 本站强烈打击盗版/破解等有损他人权益和违法作为,请各位会员支持正版!
4. 编程技术 > 如何在Sqlserver中使用时间戳数据类

用户评论