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

时间:2013-05-13 11:50:23

标签: sql-server timestamp indexed-view rowversion

与我先前提出的关于没有临时孔的序列的问题相关(保证读者可以看到的数字总是递增)enter link description here我想问一下我设计的解决方案是否有意义

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

所以我创建了一个索引视图来执行转换,我正在查询视图。在表面层面它可以工作(查询计划显示索引搜索)但我不确定如果我通过索引,总是递增保证是否仍然成立。请帮忙。

编辑
它似乎在调试时工作正常,但插入到我的表块阻止任何选择。需要调查持有什么类型的锁。

1 个答案:

答案 0 :(得分:5)

不,这没有意义

rowversion/timestamp 数据库唯一,而不是表唯一。它将被UPDATE更改为row(s),而不仅仅是INSERT。因此,这并不是你想要的严格单调增加。

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

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

MSDN says for rowversion(时间戳)

  

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

当前值位于@@DBTS