与我先前提出的关于没有临时孔的序列的问题相关(保证读者可以看到的数字总是递增)enter link description here我想问一下我设计的解决方案是否有意义
我创建了一个包含rowversion
列的表格。如果我理解正确,SQL Server保证值将始终递增。因为这只是一堆字节,所以WHERE RowVer > 1567
之类的查询需要强制转换,因此会导致表扫描。
所以我创建了一个索引视图来执行转换,我正在查询视图。在表面层面它可以工作(查询计划显示索引搜索)但我不确定如果我通过索引,总是递增保证是否仍然成立。请帮忙。
编辑
它似乎在调试时工作正常,但插入到我的表块阻止任何选择。需要调查持有什么类型的锁。
答案 0 :(得分:5)
不,这没有意义
rowversion/timestamp
数据库唯一,而不是表唯一。它将被UPDATE更改为row(s),而不仅仅是INSERT。因此,这并不是你想要的严格单调增加。
请注意,不保证数字从任何特定值开始
编辑,什么是“数据库唯一”?
每个数据库都有一个计数器,该计数器针对在数据库中包含rowversion列的表上执行的每个插入或更新操作递增。此计数器是数据库rowversion
当前值位于@@DBTS