与我之前关于没有中间漏洞的序列的问题相关(保证读者可见的数字始终递增)在此输入链接描述 https://stackoverflow.com/questions/16518133/how-to-prevent-interim-identity-holes-in-sqlserver我想问一下我设计的解决方案是否有意义。
我创建了一个表rowversion
柱子。如果我理解正确的话,SQL Server 保证这些值将始终递增。因为这只是一堆字节,所以查询如下WHERE RowVer > 1567
需要进行强制转换,因此会导致表扫描。
因此,我创建了一个可以进行转换的索引视图,并且正在查询该视图。从表面上看,它有效(查询计划显示索引查找),但我不确定是否总是递增如果我浏览索引,保证仍然成立。请帮忙。
Edit
调试时似乎工作正常,但插入到我的表中会阻止任何针对它的选择。需要调查正在持有什么类型的锁。
不,这没有意义
rowversion/timestamp
is database唯一,而不是表唯一。并且它会被行的 UPDATE 更改,而不仅仅是 INSERT。因此,这并不是您想要的严格单调递增。
请注意,不保证该数字以任何特定值开始
编辑,什么是“数据库唯一”?
MSDN 说 for rowversion http://technet.microsoft.com/en-us/library/ms182776.aspx(时间戳)
每个数据库都有一个计数器,该计数器随着对数据库中包含 rowversion 列的表执行的每次插入或更新操作而递增。这个计数器是数据库行版本
当前值位于@@DBTS http://technet.microsoft.com/en-us/library/ms187366.aspx
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)