问题标签 [rowversion]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1045 浏览

sql - 时间戳、行版本和日期时间 - 插入或更新行时我需要一个标记

我有以下要求:

我有一个包含 1 个唯一的自动增量 Int ID 和数据列的表。我需要以下内容:每次将一行插入该表时,表右端的一列必须包含该插入的完整日期时间。此外,如果更新了一行,我需要保存该行插入表的完整日期时间的列,以更新该行以保存该行的更新时间。

现在,显而易见且非常直接的方法是:创建表:

你改变你的表添加日期时间列和它的默认约束:

然后你为更新做一个很好的触发器,就像这样:

现在棘手的部分是:出于超出此处范围的原因,我想像上面那样实现这个确切的东西,但没有触发器!可能吗?我不想使用 SQL 类型的时间戳或行版本,这对我不起作用,我需要将日期、时间精确到毫秒才能清楚地存储在该列中。任何想法将不胜感激。

0 投票
1 回答
1059 浏览

c# - mongodb 中的 rowversion 或 doc 版本

在 mongodb 中进行行版本控制的合理方法是什么。Sql server 有一个 rowversion 字段,当根据数据库中跟踪的相对时间 sql server 更新行时,该字段会自动递增。想知道 mongo 中的一个好的方案会是什么样子吗?

0 投票
3 回答
10949 浏览

sql - SQL Server:Oracle 中的 RowVersion 等效项

Oracle 是否具有与SQL Server 相似的RowVersion数据类型?

当您插入或更新一行时,相应的 Version 列(类型为RowVersion)会自动更新。

MSDN 说 RowVersion

  • 是一种在数据库中公开自动生成的唯一二进制数的数据类型。rowversion 通常用作对表行进行版本标记的机制。存储大小为 8 个字节。rowversion 数据类型只是一个递增的数字,不保留日期或时间。

  • 每个数据库都有一个计数器,对于在数据库中包含 rowversion 列的表执行的每个插入或更新操作,该计数器都会递增。此计数器是数据库行版本。这跟踪数据库中的相对时间,而不是可以与时钟关联的实际时间。一个表只能有一个 rowversion 列。每次修改或插入具有 rowversion 列的行时,都会在 rowversion 列中插入递增的数据库 rowversion 值。

  • 您可以使用行的 rowversion 列轻松确定该行中的任何值自上次读取以来是否已更改。如果对行进行了任何更改,则会更新 rowversion 值。如果未对行进行更改,则 rowversion 值与之前读取时的值相同。

  • 当多个用户同时更新行时,您可以将 rowversion 列添加到表中以帮助维护数据库的完整性。您可能还想知道在不重新查询表的情况下更新了多少行和哪些行。

我们正在使用 oracle 设计数据模型,并希望使用 Version 列来管理并发。

我也想知道甲骨文世界是否有更好的方法。

0 投票
4 回答
12830 浏览

c# - 将 sql server rowversion 转换为 long 或 ulong?

rowversion(时间戳)数据类型的正确类型是什么?

我知道它是 8 个字节,但我在 MSDN 中找不到一个链接,它告诉它是有符号长还是无符号长。

我应该使用哪个代码,这有关系吗?

0 投票
1 回答
1602 浏览

sql - 防止 rowversion (timestamp) 列更改 ALTER TABLE COLUMN

我想在不更改Rowversion( timestamp) 列值的情况下运行以下命令。我想在 SQL Server 2008 R2 和 SQL Server CE 4.0 上实现这一点。

中的列MyTable

中没有数据MyTableTextColumn通过运行此命令进行更改,仍然rowversion 会更新所有值,这绝对不是预期的行为。

这是可能的还是有任何解决方法?

编辑:

为了更清楚,我应该补充一点,我的目的是在同步环境中分发数据库结构更新,其中服务器是 SQL Server 2008 R2,同步客户端是 SQL CE 4.0。

编辑 2:此问题仅存在于 SQL Compact 上。在普通 SQL Server 上,它按预期工作。

编辑 3:作为 Microsoft Connect 上的错误填充: https ://connect.microsoft.com/SQLServer/feedback/details/816991/unexpected-sql-ce-4-0-rowversion-value-behavior-with-alter-column

0 投票
2 回答
11537 浏览

sql - 实体框架支持 SQL 行版本

我的项目针对 SQL Server 2012 使用 EF(使用自跟踪模板测试版本 4,使用默认模板测试版本 5,所有数据库优先)。数据库表定义了每个rowversion( timestamp) 列。

在它的核心中使用 EF,这意味着我的数据库更新代码看起来是这样的:

不会触发任何rowversion警报。我运行并行客户端,每个客户端读取相同的记录,对其进行更改,然后每个将其写入数据库。接受所有更新,不应用并发。

我是否必须为我的更新命令使用存储过程(使用 where 子句说明我的rowversion值)才能让 EF 确认“内置”并发性,或者是否有另一种方式(配置、特定方法调用)来使我的代码工作?

0 投票
1 回答
275 浏览

entity-framework - 如何使用框架迁移创建 rowversion 字段

如何使用实体框架迁移生成 rowversion 字段?这是我要实现的目标的示例。

0 投票
2 回答
3145 浏览

sql-server - 如何将 rowversion 值存储在已经有 rowversion 列的表中?

我有两个表(UsersDeletedUsers)和一个触发器Users_Delete。当删除用户记录时,我想将 id 和最后一个rowversion值(在删除之前)存储在DeletedUsers表中。

因为SQL不允许一个表有多个类型rowversion的列,我应该如何LastUserVersionDeletedUsers表中存储?我应该使用什么数据类型?

示例代码:

0 投票
1 回答
683 浏览

sql-server - 使用@@DBTS 插入后检索新的行版本 - 安全吗?

通常的做法是IDENTITY使用.@@IDENTITYINSERT

使用值以类似方式检索最后一个rowversion值是否只是相等正确?UPDATE@@DBTS

例如:

现在可以@@DBTS安全地进行并发更新了吗?

如果另一个连接在 和 之间执行插入和更新UPDATEPRINT我们最终会rowversion得到“其他”连接而不是我们自己更新的连接吗?

0 投票
2 回答
605 浏览

sql-server - 删除 Entity Framework 对 RowVersion 列的额外查找

我需要在我的所有表中添加一个 RowVersion 列。我需要它是出于数据仓库(以及类似的仅数据库操作)之类的原因。我不想将它用于并发。

我希望实体框架继续工作,就好像 RowVersion 列不存在一样。但我似乎看不到这样做的方法。

每当我进行更新时,SQL Profile 都会告诉我正在执行的操作:

如果表上没有 RowVersion 列,则不会发生第二个 select 语句。

如何让实体框架忽略 RowVersionId 列? 如果可能的话,我更喜欢在每次从数据库更新模型后不需要手动编辑 csdl/msdl 的方法。(有人最终会忘记。)

我试过了:

  1. 确保 RowVersionId 列的并发模式设置为“无”
  2. 从 edmx 中删除 RowVersionId 列。(我似乎无法从模型中删除它。)

注意:只要我在添加列后不更新 EF 设计器 (edmx) 中的表,它就会按预期工作。所以实体框架中有一些东西可以这样做。(但我不能在添加此专栏后从开始更新时锁定我的 edmx。)