问题标签 [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.
sql - 时间戳、行版本和日期时间 - 插入或更新行时我需要一个标记
我有以下要求:
我有一个包含 1 个唯一的自动增量 Int ID 和数据列的表。我需要以下内容:每次将一行插入该表时,表右端的一列必须包含该插入的完整日期时间。此外,如果更新了一行,我需要保存该行插入表的完整日期时间的列,以更新该行以保存该行的更新时间。
现在,显而易见且非常直接的方法是:创建表:
你改变你的表添加日期时间列和它的默认约束:
然后你为更新做一个很好的触发器,就像这样:
现在棘手的部分是:出于超出此处范围的原因,我想像上面那样实现这个确切的东西,但没有触发器!可能吗?我不想使用 SQL 类型的时间戳或行版本,这对我不起作用,我需要将日期、时间精确到毫秒才能清楚地存储在该列中。任何想法将不胜感激。
c# - mongodb 中的 rowversion 或 doc 版本
在 mongodb 中进行行版本控制的合理方法是什么。Sql server 有一个 rowversion 字段,当根据数据库中跟踪的相对时间 sql server 更新行时,该字段会自动递增。想知道 mongo 中的一个好的方案会是什么样子吗?
sql - SQL Server:Oracle 中的 RowVersion 等效项
Oracle 是否具有与SQL Server 相似的RowVersion
数据类型?
当您插入或更新一行时,相应的 Version 列(类型为RowVersion
)会自动更新。
是一种在数据库中公开自动生成的唯一二进制数的数据类型。rowversion 通常用作对表行进行版本标记的机制。存储大小为 8 个字节。rowversion 数据类型只是一个递增的数字,不保留日期或时间。
每个数据库都有一个计数器,对于在数据库中包含 rowversion 列的表执行的每个插入或更新操作,该计数器都会递增。此计数器是数据库行版本。这跟踪数据库中的相对时间,而不是可以与时钟关联的实际时间。一个表只能有一个 rowversion 列。每次修改或插入具有 rowversion 列的行时,都会在 rowversion 列中插入递增的数据库 rowversion 值。
您可以使用行的 rowversion 列轻松确定该行中的任何值自上次读取以来是否已更改。如果对行进行了任何更改,则会更新 rowversion 值。如果未对行进行更改,则 rowversion 值与之前读取时的值相同。
当多个用户同时更新行时,您可以将 rowversion 列添加到表中以帮助维护数据库的完整性。您可能还想知道在不重新查询表的情况下更新了多少行和哪些行。
我们正在使用 oracle 设计数据模型,并希望使用 Version 列来管理并发。
我也想知道甲骨文世界是否有更好的方法。
c# - 将 sql server rowversion 转换为 long 或 ulong?
rowversion(时间戳)数据类型的正确类型是什么?
我知道它是 8 个字节,但我在 MSDN 中找不到一个链接,它告诉它是有符号长还是无符号长。
我应该使用哪个代码,这有关系吗?
sql - 防止 rowversion (timestamp) 列更改 ALTER TABLE COLUMN
我想在不更改Rowversion
( timestamp
) 列值的情况下运行以下命令。我想在 SQL Server 2008 R2 和 SQL Server CE 4.0 上实现这一点。
中的列MyTable
中没有数据MyTable
。TextColumn
通过运行此命令进行更改,仍然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
sql - 实体框架支持 SQL 行版本
我的项目针对 SQL Server 2012 使用 EF(使用自跟踪模板测试版本 4,使用默认模板测试版本 5,所有数据库优先)。数据库表定义了每个rowversion
( timestamp
) 列。
在它的核心中使用 EF,这意味着我的数据库更新代码看起来是这样的:
不会触发任何rowversion
警报。我运行并行客户端,每个客户端读取相同的记录,对其进行更改,然后每个将其写入数据库。接受所有更新,不应用并发。
我是否必须为我的更新命令使用存储过程(使用 where 子句说明我的rowversion
值)才能让 EF 确认“内置”并发性,或者是否有另一种方式(配置、特定方法调用)来使我的代码工作?
entity-framework - 如何使用框架迁移创建 rowversion 字段
如何使用实体框架迁移生成 rowversion 字段?这是我要实现的目标的示例。
sql-server - 如何将 rowversion 值存储在已经有 rowversion 列的表中?
我有两个表(Users
,DeletedUsers
)和一个触发器Users_Delete
。当删除用户记录时,我想将 id 和最后一个rowversion
值(在删除之前)存储在DeletedUsers
表中。
因为SQL不允许一个表有多个类型rowversion
的列,我应该如何LastUserVersion
在DeletedUsers
表中存储?我应该使用什么数据类型?
示例代码:
sql-server - 使用@@DBTS 插入后检索新的行版本 - 安全吗?
通常的做法是IDENTITY
使用.@@IDENTITY
INSERT
使用值以类似方式检索最后一个rowversion
值是否只是相等正确?UPDATE
@@DBTS
例如:
现在可以@@DBTS
安全地进行并发更新了吗?
如果另一个连接在 和 之间执行插入和更新UPDATE
,PRINT
我们最终会rowversion
得到“其他”连接而不是我们自己更新的连接吗?
sql-server - 删除 Entity Framework 对 RowVersion 列的额外查找
我需要在我的所有表中添加一个 RowVersion 列。我需要它是出于数据仓库(以及类似的仅数据库操作)之类的原因。我不想将它用于并发。
我希望实体框架继续工作,就好像 RowVersion 列不存在一样。但我似乎看不到这样做的方法。
每当我进行更新时,SQL Profile 都会告诉我正在执行的操作:
如果表上没有 RowVersion 列,则不会发生第二个 select 语句。
如何让实体框架忽略 RowVersionId 列? 如果可能的话,我更喜欢在每次从数据库更新模型后不需要手动编辑 csdl/msdl 的方法。(有人最终会忘记。)
我试过了:
- 确保 RowVersionId 列的并发模式设置为“无”
- 从 edmx 中删除 RowVersionId 列。(我似乎无法从模型中删除它。)
注意:只要我在添加列后不更新 EF 设计器 (edmx) 中的表,它就会按预期工作。所以实体框架中有一些东西可以这样做。(但我不能在添加此专栏后从开始更新时锁定我的 edmx。)