2

来自msdn

每个数据库都有一个计数器,对于在数据库中包含 rowversion 列的表执行的每个插入或更新操作,该计数器都会递增。

要返回数据库的当前 rowversion 值,请使用 @@DBTS。

我有一个数据库(相信我它只有一个表,没有时间戳/行版本字段)

在此处输入图像描述

但是当我运行 select @@DBTS 时,我得到的结果好像我有一个 rowversion 列:

在此处输入图像描述

(ps - 插入/更新 - 不更新此值)。

  • 这个值是多少?

  • 为什么我没有 rowversion 列?

4

1 回答 1

6

这个值是多少?

它是数据库中用于实现rowversion列的计数器的值。

为什么我没有 rowversion 列?

您引用的文档说每个数据库都有这样的计数器。然后它声明它将通过对包含rowversion列的表的操作来增加。

它并不是说这个计数器的存在取决于您的数据库中是否存在任何此类表。


将其解析为:

A) 每个数据库都有一个计数器

B) 递增

C) 对于执行的每个插入或更新操作

D) 在桌子上

E) 包含 rowversion 列

F) 数据库内。

(E) 和 (F) 是适用于 (D) 的条件。(C) 表示 (D) 上的哪些操作导致 (B) 发生。(BF) 中的任何一个都不会影响 (A) 的真实性或其他方面。


也没有文档(我可以找到)表明它应该从 0x0000000000000000 或任何其他值开始。鉴于此列的唯一目的是允许确定排序(X 发生在 Y 之后或 Y 之前),返回的实际值是什么并不重要。

于 2012-12-03T13:06:07.240 回答