SQL Server数据库timestamp数据类型相关知识介绍

数据库 SQL Server
SQL Server timestamp是二进制数字,它表明数据库中数据修改发生的相对顺序,与日期和时间无关。本文我们主要就介绍一下timestamp的相关知识,希望能够对您有所帮助。

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 列的一行被插入或更新时,会产生一个新的时间戳值。

关于SQL Server数据库timestamp数据类型的相关知识就介绍到这里了,希望本次的介绍能够对您有所收获!

【编辑推荐】

  1. 初学SQL Server数据库的一些常用操作总结
  2. 初学SQL Server笔记之修改表结构的示例代码
  3. SQL Server批量修改字段的数据类型的代码实例
  4. SQL Server数据库字段说明的添加修改删除示例
  5. SQL Server 2005数据库中设置自动编号字段实例解析

 

责任编辑:赵鹏 来源: 博客园
相关推荐

2011-08-25 15:19:25

SQL Server 排序规则

2021-03-24 14:50:00

SQLServer数据库字符串

2021-03-19 07:12:23

SQL Server数据库数据库收缩

2011-08-04 15:20:52

SQL Server数据库镜像

2010-06-30 11:31:55

SQL Server数

2010-10-19 15:54:38

sql server创

2021-02-06 23:03:58

SQLServer数据库变量

2021-03-04 22:02:18

SQL Serve数据库架构

2010-07-22 15:13:08

SQL Server

2010-07-23 15:03:02

SQL Server数

2010-07-22 17:57:40

2011-07-29 13:17:58

SQL Server Analysis Se

2010-04-23 14:08:11

Oracle数据类型

2010-07-15 17:28:50

SQL Server

2010-09-06 16:25:46

SQL函数

2011-09-02 10:37:15

Oraclesqlload用法

2011-04-07 14:50:21

SQL Server数据库

2011-03-29 09:40:31

SQL Server数据库链接

2011-08-24 13:23:35

Access 2010

2010-09-25 09:45:46

sql server主
点赞
收藏

51CTO技术栈公众号