在仅附加表中设置版本列

2024-03-21

我们有一个表来存储记录的版本。

这些列是:

Id (Guid)
VersionNumber (int)
Title (nvarchar)
Description (nvarchar)
etc...

保存项目将在表中插入具有相同 ID 和增量版本号的新行。

我不确定如何最好地生成顺序 VersionNumber 值。我最初的想法是:

SELECT @NewVersionNumber = MAX(VersionNumber) + 1
FROM VersionTable
WHERE Id = @ObjectId

然后在我的插入语句中使用@NewVersionNumber。

如果我使用此方法,是否需要将事务设置为可序列化以避免并发问题?我不想最终得到相同 ID 的重复版本号。

有没有更好的方法来做到这一点,而不会让我使用可序列化事务?


为了避免并发问题(或者在您的特定情况下重复插入),您可以创建一个复合键作为表的主键,由 ID 和 VersionNumber 列组成。然后,这将对键列强制执行唯一约束。

随后,可以设计您的插入例程/逻辑来处理或更确切地说捕获由于重复键而导致的插入错误,然后简单地重新发出插入过程。

还值得一提的是,除非您特别需要使用 GUID,即因为使用 SQL Server 复制或多个数据源,否则您应该考虑使用替代数据类型,例如 BIGINT。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在仅附加表中设置版本列 的相关文章

随机推荐

  • 嵌入式Linux中的busybox显示“未找到小程序”

    我自己编译了busybox 并将其放在我们的嵌入式linux中 但我有一些问题 问题1 当我尝试使用某些命令 例如gzip 时 它打印 gzip 未找到小程序 当我检查busybox的菜单配置时 我确保我选择了 gzip 问题2 我曾经使用
  • 带有附件/MIME 内容的 SOAP

    需要从第三方发送和接收以下格式的 SOAP 消息 POST api HTTP 1 1 Host mytesthost com Content Type multipart related boundary aMIMEBoundary typ
  • 当我使用 Perl 执行 Python 脚本时,为什么没有出现任何语法错误?

    我刚刚写了一些测试Python代码到test py 我将按如下方式启动它 perl test py 过了一会儿我意识到自己的错误 我说 过了一会儿 因为 Python 代码实际上被正确执行 就像在 Python 解释器中一样 为什么我的 P
  • okhttp 应用级 OkHttpClient 实例

    我想知道如果我创建一个 OkHttpClient 实例来为我的 整个 Android 应用程序 提供服务 是否会出现任何性能瓶颈或问题 即在我的 Application 类中 我创建一个静态公共变量 它将包含 OkHttpClient 的实
  • 如何检查 List 元素是否包含具有特定属性值的项目

    public class PricePublicModel public PricePublicModel public int PriceGroupID get set public double Size get set public
  • 如何解决垂直 RecyclerView 内水平 ViewPager2 和 RecyclerView 的滚动问题?

    我有一个 RecyclerView 比如说 rootRecyclerView 根据某些 API 响应 可以有不同类型的行 我实现了其中一个是水平的ViewPager2另一种是水平实现的RecyclerView say childRecycl
  • PHP 5 - 跨包含文件的变量范围没有类或函数

    我已经阅读了很多很多关于此的主题 但仍然无法理解它 这是我的基本问题 header php包括一个名为navigation php 之内navigation php previous and next被定义 使用 echo 语句我已经验证它
  • 将长元组拆分为较小的元组

    我有一个长元组像 2 2 10 10 344 344 45 43 2 2 10 10 12 8 2 10 我试图将它分成元组的元组 例如 2 2 10 10 344 344 45 43 2 2 10 10 12 8 2 10 我是 pyth
  • Angular 4 - 如何为 ngFor 循环内的标签拥有唯一的 id 值?

    我遇到了一个问题 我需要为我的数据行中的每个数据行提供一个唯一的 id 值 ngFor角度 4 中的循环 我的代码是这样的 div div row myValue div div 假设你的对象中有一个唯一的 id 值 那么你可以这样做 di
  • R data.table 是否记录为通过引用作为参数传递?

    检查这个玩具代码 gt x lt data table a 1 2 gt foo lt function z z b 3 4 gt y lt foo x gt x a b 1 1 3 2 2 4 看来 data table 是通过引用传递的
  • 如何抑制 webdriver-manager 日志

    我正在使用 webdrivermanager 来管理项目中的驱动程序 但在更新到最新版本 2 2 1 后 我的项目中充满了 webdrivermanger 日志 这些日志在日志中搜索我自己的内容时造成了麻烦 我怎样才能停止 抑制这些日志 通
  • 钻石问题真的能解决吗?

    面向对象编程中的一个典型问题是菱形问题 我有父类 A 和两个子类 B 和 C A 有一个抽象方法 B 和 C 实现它 现在我有一个子类D 它继承了BandC 现在的钻石问题是 D应该使用什么实现 B的实现还是C的实现 人们声称 Java 不
  • AJAX post JSON 数据到达为空

    这是我的 AJAX 请求 data JSON stringify data url base url index php home make order alert url var request ajax url url type POS
  • 如何将 python 添加到 Windows 中的 cmd [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我安装了 python 3 1 并且也将其添加到系统路径中 现在我可以打开 cmd 并输入 python 来启动 python 但是每当我
  • 像树一样渲染嵌套列表

    我如何使垂直边框停在最后一个元素处 它只能与 CSS3 现代浏览器兼容 但需要在各种背景下工作 即透明 http jsfiddle net ShgD6 http jsfiddle net ShgD6 由此 To this 我通过修改这个小提
  • 如何在猫头鹰旋转木马的角度中制定指令?

    你能告诉我如何在 Angular js 中制作指令吗 我需要在 js 中使用 owl carousel 插件 就像我在 jqm fiddle 中所做的那样http jsfiddle net ezanker o9foej5L 1 http j
  • Vuetify 离线文档

    我已经开始使用 Vuetify 添加 ui 组件并使用预定义的布局 问题是我必须时不时地查看在线文档 并且要求我永远连接到互联网 有没有办法获取 Vuetify 的离线文档 就像使用 doxygen javadocs 构建的 html 或
  • 如何使用 Scala 的 DataFrame 比较表中的每一列

    有两张桌子 一张是ID表1 一张是属性表2 Table 1 Table 2 如果表1中同一行的ID具有相同的属性 则得到数字1 否则得到0 最终得到结果表3 Table 3 例如 id1和id2具有不同的颜色和大小 因此id1和id2行 表
  • 如何在jQuery中选择所有本地链接

    我需要选择所有本地链接 无论是否以 path to page http mydomain com path to page https mydomain com path to page 并将它们替换为 path to page 感谢您的帮
  • 在仅附加表中设置版本列

    我们有一个表来存储记录的版本 这些列是 Id Guid VersionNumber int Title nvarchar Description nvarchar etc 保存项目将在表中插入具有相同 ID 和增量版本号的新行 我不确定如何