SQL Server矢量时钟

时间:2018-06-14 20:27:24

标签: sql-server time vector-clock

SQL Server中是否有一个全局序列号可以保证定期递增(即使在系统时间消退时),并且可以作为插入或更新操作的一部分进行访问?

2 个答案:

答案 0 :(得分:1)

rowversion数据类型,@@dbts功能是您正在寻找的功能。

这种使用rowversion标记行的模式由Change Tracking功能在较低级别实现。其中添加了对插入/更新和删除的跟踪,并且不要求您向表中添加列。

答案 1 :(得分:1)

我非常确定ROWVERSION会做你想要的。保证ROWVERSION类型的列在任何单个数据库中都是唯一的,并且根据SQL文档,它只不过是递增的数字。如果您每次完成数据更新后只保存MAX(ROWVERSION),则可以通过查看大于保存的MAX()的ROWVERSION来查找下一个更新过程中的更新行或插入行。请注意,您无法以这种方式捕获删除!

另一种方法是使用LineageId和触发器。如果能有所帮助,我很乐意解释这种方法,但我认为ROWVERSION是一个更简单的解决方案。