在SQL Server上索引rowversion/timestamp列的后果



关于我之前关于没有中间洞的序列的问题(保证读者可以看到的数字总是递增),我想问一下我设计的解决方案是否有意义。

我创建了一个包含rowversion列的表。如果我理解正确的话,SQL Server保证这些值总是递增的。因为这只是一堆字节,像WHERE RowVer > 1567这样的查询需要强制转换,因此会导致表扫描。

我创建了一个索引视图它会进行强制转换我正在查询这个视图。从表面上看,它可以工作(查询计划显示索引查找),但我不确定如果我遍历索引,总是递增保证是否仍然成立。请帮助。

编辑
调试时似乎工作得很好,但插入到我的表块任何选择反对它。

不,这没有意义

rowversion/timestamp数据库唯一,而不是表唯一。并且它将通过更新来更改行,而不仅仅是插入。因此,这不是你想要的严格单调递增。

注意,数字不能保证从任何特定的值开始

编辑,什么是"数据库唯一"?

MSDN表示for rowversion (timestamp)

每个数据库都有一个计数器,当在数据库中包含rowversion列的表上执行每次插入或更新操作时,该计数器会递增。该计数器是数据库rowversion

当前值在@@DBTS

最新更新