在所有行中都是TimeStamp
唯一的吗?
它上面有唯一索引吗?
从MSDN 文章中,强调我的:
时间戳是一种数据类型,它在数据库中公开自动生成的唯一二进制数。时间戳通常用作对表行进行版本标记的机制。存储大小为 8 个字节。时间戳数据类型只是一个递增的数字,不保留日期或时间。要记录日期或时间,请使用 datetime 数据类型。
它还提供了这个有趣的注释:
可以使用 SELECT INTO 语句生成重复的时间戳值,其中时间戳列位于 SELECT 列表中。我们不建议以这种方式使用时间戳。
在 SQL server 2008 及更高版本中,该timestamp
类型已重命名为rowversion
,大概是为了更好地反映其用途和价值。
文档说
数据库中唯一的二进制数
但在实践中,您可能会遇到这种说法不正确的情况。由于该值是从 a 生成的,因此database global counter
您在还原数据库或timestamp
在tempdb
.
您可以看到下一个值:
Select @@DBTS
在 SQL Server 2000 之前,有一个未记录的命令来更改值
DBCC CHECKDBTS (dbId, newTimestamp)
要更改 SQL Server 的非古代版本中的时间戳,请参阅此答案: