Sqlservertimestamp数据类使用介绍
数据 使用 介绍
2023-06-13 09:14:30 时间
在SQLServer中联机丛书是这样说的:
SQLServertimestamp数据类型与时间和日期无关。SQLServertimestamp是二进制数字,它表明数据库中数据修改发生的相对顺序。实现timestamp数据类型最初是为了支持SQLServer恢复算法。每次修改页时,都会使用当前的@@DBTS值对其做一次标记,然后@@DBTS加1。这样做足以帮助恢复过程确定页修改的相对次序,但是timestamp值与时间没有任何关系。
我用口水话解释一下便于理解:
我们知道数字类型有个“标识”属性,设置好“标识种子”、“标识递增量”,每增加一条记录时,这个字段的值就会在最近的一个标识值基础上自动增加,这样我们可以知道哪些记录是先添加的,哪些记录是后添加的,但是我们无法知道哪些记录修改过。timestamp这个类型的字段呢,每增加一条记录时,它会在最近的一个时间戳基础上自动增加,当修改某条记录时,它也会在最近的一个时间戳基础上自动增加,所以我们就知道哪些记录修改过了。
timestamp这种数据类型表现自动生成的二进制数,确保这些数在数据库中是唯一的。timestamp一般用作给表行加版本戳的机制。存储大小为8字节。
注释
Transact-SQLtimestamp数据类型与在SQL-92标准中定义的timestamp数据类型不同。SQL-92timestamp数据类型等价于Transact-SQLdatetime数据类型。
Microsoft®SQLServer™将来的版本可能会修改Transact-SQLtimestamp数据类型的行为,使它与在标准中定义的行为一致。到那时,当前的timestamp数据类型将用rowversion数据类型替换。
Microsoft®SQLServer™2000引入了timestamp数据类型的rowversion同义词。在DDL语句中尽可能使用rowversion而不使用timestamp。rowversion受数据类型同义词行为的制约。有关更多信息,请参见数据类型同义词。
在CREATETABLE或ALTERTABLE语句中,不必为timestamp数据类型提供列名:
CREATETABLEExampleTable(PriKeyintPRIMARYKEY,timestamp)如果没有提供列名,SQLServer将生成timestamp的列名。rowversion数据类型同义词不具有这样的行为。指定rowversion时必须提供列名。
一个表只能有一个timestamp列。每次插入或更新包含timestamp列的行时,timestamp列中的值均会更新。这一属性使timestamp列不适合作为键使用,尤其是不能作为主键使用。对行的任何更新都会更改timestamp值,从而更改键值。如果该列属于主键,那么旧的键值将无效,进而引用该旧值的外键也将不再有效。如果该表在动态游标中引用,则所有更新均会更改游标中行的位置。如果该列属于索引键,则对数据行的所有更新还将导致索引更新。
不可为空的timestamp列在语义上等价于binary(8)列。可为空的timestamp列在语义上等价于varbinary(8)列。
MicrosoftSQLServer用两个4字节的整数内部存储datetime数据类型的值。第一个4字节存储basedate(即1900年1月1日)之前或之后的天数。基础日期是系统参考日期。不允许早于1753年1月1日的datetime值。另外一个4字节存储以午夜后毫秒数所代表的每天的时间。
复制代码代码如下:
SQLServertimestamp数据类型与时间和日期无关。SQLServertimestamp是二进制数字,它表明数据库中数据修改发生的相对顺序。实现timestamp数据类型最初是为了支持SQLServer恢复算法。每次修改页时,都会使用当前的@@DBTS值对其做一次标记,然后@@DBTS加1。这样做足以帮助恢复过程确定页修改的相对次序,但是timestamp值与时间没有任何关系。
我用口水话解释一下便于理解:
我们知道数字类型有个“标识”属性,设置好“标识种子”、“标识递增量”,每增加一条记录时,这个字段的值就会在最近的一个标识值基础上自动增加,这样我们可以知道哪些记录是先添加的,哪些记录是后添加的,但是我们无法知道哪些记录修改过。timestamp这个类型的字段呢,每增加一条记录时,它会在最近的一个时间戳基础上自动增加,当修改某条记录时,它也会在最近的一个时间戳基础上自动增加,所以我们就知道哪些记录修改过了。
timestamp这种数据类型表现自动生成的二进制数,确保这些数在数据库中是唯一的。timestamp一般用作给表行加版本戳的机制。存储大小为8字节。
注释
Transact-SQLtimestamp数据类型与在SQL-92标准中定义的timestamp数据类型不同。SQL-92timestamp数据类型等价于Transact-SQLdatetime数据类型。
Microsoft®SQLServer™将来的版本可能会修改Transact-SQLtimestamp数据类型的行为,使它与在标准中定义的行为一致。到那时,当前的timestamp数据类型将用rowversion数据类型替换。
Microsoft®SQLServer™2000引入了timestamp数据类型的rowversion同义词。在DDL语句中尽可能使用rowversion而不使用timestamp。rowversion受数据类型同义词行为的制约。有关更多信息,请参见数据类型同义词。
在CREATETABLE或ALTERTABLE语句中,不必为timestamp数据类型提供列名:
CREATETABLEExampleTable(PriKeyintPRIMARYKEY,timestamp)如果没有提供列名,SQLServer将生成timestamp的列名。rowversion数据类型同义词不具有这样的行为。指定rowversion时必须提供列名。
一个表只能有一个timestamp列。每次插入或更新包含timestamp列的行时,timestamp列中的值均会更新。这一属性使timestamp列不适合作为键使用,尤其是不能作为主键使用。对行的任何更新都会更改timestamp值,从而更改键值。如果该列属于主键,那么旧的键值将无效,进而引用该旧值的外键也将不再有效。如果该表在动态游标中引用,则所有更新均会更改游标中行的位置。如果该列属于索引键,则对数据行的所有更新还将导致索引更新。
不可为空的timestamp列在语义上等价于binary(8)列。可为空的timestamp列在语义上等价于varbinary(8)列。
MicrosoftSQLServer用两个4字节的整数内部存储datetime数据类型的值。第一个4字节存储basedate(即1900年1月1日)之前或之后的天数。基础日期是系统参考日期。不允许早于1753年1月1日的datetime值。另外一个4字节存储以午夜后毫秒数所代表的每天的时间。
@@DBTS(SELECT@@DBTS)
为当前数据库返回当前timestamp数据类型的值。这一timestamp值保证在数据库中是唯一的。
语法
@@DBTS
返回类型
varbinary
注释
@@DBTS
返回当前数据库最后所使用的时间戳值。当带有timestamp列的一行被插入或更新时,会产生一个新的时间戳值。
相关文章
- elasticsearch导出大量数据_error attempting to get column
- 【视频】文本挖掘:主题模型(LDA)及R语言实现分析游记数据|附代码数据
- 【C语言】关于整型提升、截断、打印数据的结果
- Ubuntu 上使用 ADB 备份 Android 数据
- Hadoop部署启动异常问题排查详解大数据
- Linux服务器安全加固,保护你的数据(linux服务器加固)
- Linux下恢复磁盘数据的正确操作方法(linux修复磁盘命令)
- 使用Redis构建前向安全的数据过滤器(redis数据过滤)
- 解决Oracle中重复数据问题(oracle显示重复数据)
- 掌握Oracle触发器类型,实现数据精准控制(oracle触发器类型)
- 和 lineMySQL点和线:快速发现数据的机会(mysqlpoint)
- 使用 JS 操作 Redis:实现强大数据存储.(js调用redis)
- 轻松搬家:使用MySQL迁移工具快速迁移数据(mysql迁移工具)
- 使用MSSQL连接字符函数实现数据字符化(mssql 连接字符函数)
- MySQL 数据库的详细介绍及应用指南,让您全面了解如何使用 MySQL 数据库搭建高效的数据存储和管理系统。(mysql大全)
- 如何使用MySQL查找重复数据(mysql查找数据重复)
- 实现数据共享MySQL 两表数据同步方法解析(mysql 两表同步数据)
- 使用Redis技术实现高效数据存储(用到redis的写法)
- Redis如何进行数据更新添加(添加数据redis更新吗)
- 构建数据未来使用Redis连接云数据库(云数据库redis连接)
- MySQL数据导入失败的解决方法(mysql一直导入失败)
- 提升工作效率优化Oracle事务数据使用(oracle 事务数使用)
- 灵活多变多套系统使用Redis实现数据交互(多套系统使用redis)
- 重新清理使用Redis管理数据(redis里清数据)
- 使用Oracle DB实现数据同步(oracle db 同步)
- 一些关于数据存储和查询优化的想法
- 基于B-树和B+树的使用:数据搜索和数据库索引的详细介绍