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