SQL Server - 即使在回滚的情况下如何确保标识字段正确增加

2024-06-05

在 SQL Server 中,如果涉及插入新行的事务被回滚,则标识字段中的数字将被跳过。

例如,如果Foos表是99,然后我们尝试插入一个新的Foo记录但回滚,然后 ID 100 被“用完”,下一个Foo行编号为 101。

有什么方法可以改变这种行为,以便保证身份字段是连续的?


你所追求的永远不会与身份列一起使用。

它们被设计为“放弃”并忘记,这样就不会导致等待或死锁等。该属性允许将 IDENTITY 列用作高度事务性系统中的序列,而不会出现延迟或瓶颈。

确保没有间隙意味着无法实现每秒 100 次插入的系统,因为将有一个很长的队列来确定第一个插入是否要回滚。

出于同样的原因,您通常不希望出现这种行为,也不希望在大容量表中出现这样的数字序列。但是,对于非常罕见的单进程表(例如每月单个进程的发票编号),可以将事务放在MAX(number)+1或类似的查询,例如

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

SQL Server - 即使在回滚的情况下如何确保标识字段正确增加 的相关文章

随机推荐

  • 如何使用类在 PowerShell 中实现事件处理

    我希望能够创建一个自定义事件 该事件将触发订阅该事件的函数或对象 我查看了一些功能 例如 New Event and Register ObjectEvent 但我不完全确定如何有效地将它们组合在一起 我想要的想法是让一个函数在引发某个事件
  • 卡片栏嵌入推文:Chrome 和其他浏览器之间的差异

    我使用 Bootstrap 4 卡栏在我的网站上分享推文 我注意到 Chrome 和其他浏览器之间的区别 事实上 Chrome 丢失了第二列和第三列的一些信息 您可以在捕获中看到这一点 你可以帮帮我吗 抱歉我的英语不好 我是年轻的法国开发者
  • 将 MS Access 连接到网络上的 SQL Server

    我在 Windows 服务器上安装了 SQL Server Express 我有 10 个人在本地 PC 上安装了 MS Access 2016 假设数据库非常小且简单 连接 SQL Server 最简单的方法是什么 简单的 ODBC 可以
  • 使用Address Sanitizer和gcc7.1.0时如何生成核心转储

    我编译了我的代码 fsanitize address在 CentOS 7 2 1511 上 当我将 gcc 更新到 7 1 0 时 它无法再生成核心转储文件 有谁能够帮助我 gcc编译选项 lm g3 Wall Wno unknown pr
  • 如何使用 svg 使 iframe“可聚焦”

    我想检测 iframe 上的点击 这建议 https stackoverflow com a 8101458 246719执行此操作的方法是捕获父窗口上的模糊事件 但是 当用户单击 iframe 内的 svg 时 它不会获得焦点 根窗口也不
  • Plotly:如何创建月度和年度平均下拉选项?

    我希望在 Plotly 中创建一个下拉菜单 以将原始的每日时间序列重新采样为月平均值和年平均值 总之 我期望下拉列表中有 3 个选项 第一个是绘制的原始每日时间步长 第二个是重新采样的每日数据的月平均值 第三个是可以选择的年度平均值 这是迄
  • PostSharp 如何在运行时知道某个方面是否应用于方法?

    我正在实现 PostSharp 方面库 但无法找到以下问题的解决方案 假设我们有一个方面将应用于某些方法 而不会应用于其他方法 我需要某种可以在运行时使用的机制来了解某个方面是否应用于方法 具体来说 在运行时确定某些方面是否应用于由 a 给
  • Super() 关键字...它可以用来调用多个超类的构造函数吗? [复制]

    这个问题在这里已经有答案了 我想我错过了一些东西 或者有些东西不适合我 我正在读一本关于java的书 我刚刚了解了super 当用于获取构造函数时 它从一个超类向上获取构造函数 对吗 如果你想提升两个超类怎么办 我的脑子里有些东西不太对劲
  • 具有多个范围的 Powershell 整数参数验证

    我知道您可以声明一个仅接受特定范围内的值的整数参数 Parameter ValidateRange 1024 66535 Port 是否可以验证多个范围的参数输入 例如 假设我希望允许端口输入为 1 到 80 135 到 445 以及 10
  • git difftool 进行目录比较?

    是否可以使用 git difftool 命令来打开已更改文件和暂存 检查文件之间的目录比较 因此 理想情况下 如果 2 个文件已更改 它们将是唯一显示的 2 个文件 但在目录比较中 我读过关于让 git 并行给出所有文件差异的帖子 所以像
  • 在 Swift 中使用模板键入别名声明

    如何避免函数中多余的限制声明f0 f1 f10 class SomeClass
  • 有没有办法让 C# 类处理自己的空引用异常

    Question 我想要一个能够处理自身空引用的类 我怎样才能做到这一点 扩展方法是我能想到的唯一方法 但我想我会问一下 以防有一些关于 C 的有趣的事情我不知道 Example 我有一堂课叫User有一个名为IsAuthorized Wh
  • C# 代码在 IIS 上运行速度快,但在 Mono 上运行速度慢 - 如何改进?

    我有一个 ASP NET 应用程序 它在我的 Windows 开发计算机上运行良好 不过 服务器是运行 Mono 的 Linux 一旦上传 相同的代码在 Windows 上的运行速度会比在 Windows 机器上慢 4 到 5 倍 例如 一
  • 如何自定义ActionBar上的后退按钮

    我已经能够使用以下建议自定义操作栏的背景 徽标图像和文本颜色 Android 如何将 ActionBar Home 图标更改为应用程序图标以外的其他图标 https stackoverflow com questions 6351479 a
  • 会话超时(session.setMaxInactiveInterval)在 Google Appengine 中不起作用

    我尝试使用以下命令为特定用户设置会话超时session setMaxInactiveInterval 30 60 30分钟 但默认情况下它被分配为 86400 秒 24 小时 也在 Web xml 中尝试过
  • 如何在opengl中使用四元数绕屏幕中心旋转?

    我正在尝试实现轨迹球 轨迹球旋转 但我的中心有问题 回转 无论如何 我希望中心成为屏幕的中心 让我解释一下到目前为止我所做的事情 我创建了一个四元数 旋转轴 向量起点x向量结束 角度 向量起点 向量结束 从该四元数中 我创建了一个旋转矩阵
  • Camera.takePicture 返回旋转的 byteArray

    我正在尝试使用制作自定义相机应用程序hardware camera 我已经实现了PictureCallback拍照时会写入指定路径的文件中 这data写入文件的是ByteArray由返回takePicture在相机 API 中 因此 在写入
  • contenteditable div 中的内容为空

    我有一个 contenteditable div 充当文本区域 div class post div 如何通过 JS JQuery 清空 div 以清除所有值 我试过了 post html 但它不能正常工作 请帮忙 post empty d
  • Sierra 更新后无法针对 iOS 10 进行编译

    我有一个今年八月生成的证书和配置文件 它们在 Apple 开发者门户中均有效 未过期 当我打开以 8 3 为目标的项目时 出现以下错误 No certificate matching iPhone Developer My Name ABC
  • SQL Server - 即使在回滚的情况下如何确保标识字段正确增加

    在 SQL Server 中 如果涉及插入新行的事务被回滚 则标识字段中的数字将被跳过 例如 如果Foos表是99 然后我们尝试插入一个新的Foo记录但回滚 然后 ID 100 被 用完 下一个Foo行编号为 101 有什么方法可以改变这种