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

Szy*_*ega 2 sql-server timestamp rowversion indexed-view

与我之前关于没有临时孔的序列(保证读者可见的数字总是递增)的问题相关,请在此处输入链接描述,我想问一下我设计的解决方案是否有意义.

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

所以我创建了一个索引视图来执行转换,我正在查询视图.它在表面上运行(查询计划显示索引查找)但是我不确定如果我浏览索引,总是递增的保证是否仍然成立.请帮忙.

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

gbn*_*gbn 5

不,这没有意义

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

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

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

MSDN说的是rowversion(时间戳)

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

当前值是 @@DBTS

  • @SzymonPobiega:你说"只要在我的表中添加新行时它们不会被填充,我就能容忍漏洞".我说"为什么不使用IDENTITY?" 那问题的重点是什么? (2认同)
  • @SzymonPobiega:我不认为这是一个问题.IDENTITY分配的号码不会改变. (2认同)