TimeStamp列是否独一无二?

时间:2012-05-16 10:17:09

标签: sql sql-server sql-server-2008 timestamp

TimeStamp在所有行中都是唯一的吗?

它有独特的索引吗?

3 个答案:

答案 0 :(得分:4)

来自MSDN article,强调我的:

  

时间戳是一种公开自动生成的数据类型,唯一   数据库中的二进制数。时间戳通常用作a   用于对表行进行版本标记的机制。存储空间大小为8   字节。 时间戳数据类型只是一个递增的数字而且确实如此   不保留日期或时间。要记录日期或时间,请使用   日期时间数据类型。

它也提供了这个有趣的说明:

  

使用SELECT INTO可以生成重复的时间戳值   时间戳列在SELECT列表中的语句。我们不   建议以这种方式使用时间戳。

在SQL Server 2008及更高版本中,timestamp类型已重命名为rowversion,可能是为了更好地反映其目的和价值。

答案 1 :(得分:3)

timestamp是一种数据类型,它公开自动生成的二进制数,这些数字保证在数据库中是唯一的。 timestamp通常用作对表行进行版本标记的机制。存储大小为8个字节。


有关详细信息,请查看THIS文章。

答案 2 :(得分:0)

文档说

  

数据库中的唯一二进制数

但实际上,你可以遇到这种说法不正确的情况。由于该值是从database global counter生成的,因此在恢复数据库和/或timestamp中的表格中使用tempdb时可能会遇到问题。

您可以看到下一个值:

Select @@DBTS

在SQL Server 2000之前,有一个未记录的命令来更改值

DBCC CHECKDBTS (dbId, newTimestamp)

要更改SQL服务器的非古代verswions中的时间戳,请参阅以下答案:

https://dba.stackexchange.com/a/11088/149485