SQL Server RowVersion/时间戳 - 比较

SQL Server RowVersion/Timestamp - Comparisons(SQL Server RowVersion/时间戳 - 比较)
本文介绍了SQL Server RowVersion/时间戳 - 比较的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我知道 RowVersion 列的值本身并没有用,除了每次更新行时它都会改变.但是,我想知道它们是否对相对(不等式)比较有用.

I know that the value itself for a RowVersion column is not in and of itself useful, except that it changes each time the row is updated. However, I was wondering if they are useful for relative (inequality) comparison.

如果我有一个带有 RowVersion 列的表,则以下任一为真:

If I have a table with a RowVersion column, are either of the following true:

  • 同时发生的所有更新(相同的更新语句或相同的事务)在 RowVersion 列中是否具有相同的值?
  • 如果我先更新A",然后更新B",更新B"中涉及的行的值是否会高于更新A"中涉及的行?
  • Will all updates that occur simultaneously (either same update statement or same transaction) have the same value in the RowVersion column?
  • If I do update "A", followed by update "B", will the rows involved in update "B" have a higher value than the rows involved in update "A"?

谢谢.

推荐答案

来自 MSDN:

每个数据库都有一个计数器,每次插入或更新操作都会增加一个计数器,该操作是在数据库中包含 rowversion 列的表上执行的.这个计数器是数据库rowversion.这跟踪数据库中的相对时间,而不是可以与时钟关联的实际时间.每次具有rowversion被修改或插入递增> 数据库 rowversion value 插入到 rowversion 列中.

Each database has a counter that is incremented for each insert or update operation that is performed on a table that contains a rowversion column within the database. This counter is the database rowversion. This tracks a relative time within a database, not an actual time that can be associated with a clock. Every time that a row with a rowversion column is modified or inserted, the incremented database rowversion value is inserted in the rowversion column.

http://msdn.microsoft.com/en-us/library/ms182776.aspx

  • 据我了解,系统中实际上并没有同时发生任何事情.这意味着所有 rowversion 都应该是唯一的.我冒昧地说,如果在同一个表中允许重复,它们实际上将毫无用处.另外值得一提的是,rowversion 不被复制是 MSDN 不将它们用作主键的立场,不是因为它会导致违规,而是因为它会导致外键问题.
  • 根据 MSDN,rowversion 数据类型只是一个递增的数字......"所以是的,后来更大.
  • As far as I understand, nothing ACTUALLY happens simultaneously in the system. This means that all rowversions should be unique. I venture to say that they would be effectively useless if duplicates were allowed within the same table. Also giving credance to rowversions not being duplicated is MSDN's stance on not using them as primary keys not because it would cause violations, but because it would cause foreign key issues.
  • According to MSDN, "The rowversion data type is just an incrementing number..." so yes, later is larger.

对于增加多少的问题,MSDN 指出,[rowversion] 跟踪数据库中的相对时间",这表明它不是一个流动的整数递增,但基于时间.然而,这个时间"并没有透露确切的时间,而是相对于其他行插入/修改了一行.

To the question of how much it increments, MSDN states, "[rowversion] tracks a relative time within a database" which indicates that it is not a fluid integer incrementing, but time based. However, this "time" reveals nothing of when exactly, but rather when in relation to other rows a row was inserted/modified.

这篇关于SQL Server RowVersion/时间戳 - 比较的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!

本站部分内容来源互联网,如果有图片或者内容侵犯您的权益请联系我们删除!

相关文档推荐

Execute complex raw SQL query in EF6(在EF6中执行复杂的原始SQL查询)
SSIS: Model design issue causing duplications - can two fact tables be connected?(SSIS:模型设计问题导致重复-两个事实表可以连接吗?)
SQL Server Graph Database - shortest path using multiple edge types(SQL Server图形数据库-使用多种边类型的最短路径)
Invalid column name when using EF Core filtered includes(使用EF核心过滤包括时无效的列名)
How should make faster SQL Server filtering procedure with many parameters(如何让多参数的SQL Server过滤程序更快)
How can I generate an entity–relationship (ER) diagram of a database using Microsoft SQL Server Management Studio?(如何使用Microsoft SQL Server Management Studio生成数据库的实体关系(ER)图?)