SQL Server 中是否有全局序列号可以保证定期递增(即使系统时间回归(,并且可以作为插入或更新操作的一部分进行访问?
是的,rowversion 数据类型和 @@dbts 函数就是您要查找的。
这种使用行版本标记行的模式由更改跟踪功能在较低级别实现。 这增加了对插入/更新和删除的跟踪,并且不需要您向表中添加列。
我很确定ROWVERSION可以做你想要的。 ROWVERSION 类型的列保证在任何单个数据库中都是唯一的,并且根据 SQL 文档,它只不过是一个递增的数字。 如果每次完成数据更新后都只保存 MAX(ROWVERSION(,则可以通过查找大于保存的 MAX(( 的 fo0r ROWVERSION,在下一次更新过程中找到更新或插入的行。 请注意,您无法以这种方式捕获删除!
另一种方法是使用 LineageId 和触发器。 如果有帮助,我很乐意解释这种方法,但我认为 ROWVERSION 是一个更简单的解决方案。