如何在 DB2 上的多个表上使用 WHERE 条件执行安全的“SELECT FOR UPDATE”?

2023-12-25

Problem

在 DB2(版本 9.5)上的 SQL 语句

SELECT o.Id FROM Table1 o, Table2 x WHERE [...] FOR UPDATE WITH RR

给我错误消息SQLSTATE=42829(不允许使用 FOR UPDATE 子句,因为无法修改游标指定的表)。

附加信息

我需要指定WITH RR,因为我在隔离级别上运行READ_COMMITTED,但是当有另一个进程运行相同的查询时,我需要阻止我的查询。

到目前为止的解决方案...

如果我像这样查询:

SELECT t.Id FROM Table t WHERE t.Id IN (
    SELECT o.Id FROM Table1 o, Table2 x WHERE [...]
) FOR UPDATE WITH RR

一切正常。

新问题

但现在当多个进程同时执行此查询时,我偶尔会遇到死锁异常。

Question

有没有办法制定FOR UPDATE查询而不引入可能发生死锁的地方?


首先,要有隔离级别READ_COMMITTED你不需要指定WITH RR,因为这会导致隔离级别SERIALIZABLE。指定WITH RS(阅读稳定性)就足够了。

为了传播FOR UPDATE WITH RS对于内部选择,您必须另外指定USE AND KEEP UPDATE LOCKS.

所以完整的声明如下所示:

SELECT t.Id FROM Table t WHERE t.Id IN (
    SELECT o.Id FROM Table1 o, Table2 x WHERE [...]
) FOR UPDATE WITH RS USE AND KEEP UPDATE LOCKS

我通过 JDBC 在 DB2 上进行了一些测试,它没有出现死锁。

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

如何在 DB2 上的多个表上使用 WHERE 条件执行安全的“SELECT FOR UPDATE”? 的相关文章

  • 无法在 Apache Airflow 中设置 DB2/DashDB JDBC 连接

    我正在尝试使用 Airflow UI 创建 DB2 DashDB 连接 我添加了 db2jcc4 jar 驱动程序并提供了路径以及类名 com ibm db2 jcc DB2Driver class 我尝试运行一个简单的查询 在临时 UI
  • sql中的特殊字符排序

    我有名为 联系人 的表 有名为 id 和 name 的列 各列值如下所示 ID Name 1 ABC 3 DEF 2 GHI JKL null MNO null PQR 我需要查询要在顶行列出的特殊字符 如下所示 ID Name JKL 1
  • 不存在足够的页面大小 - DB2 插入

    我有一个 DB2 查询 简单插入语句 它试图插入一些 27 列 在这些列中 第 1 列是Clob问题就在那里 为了我的Clob列 有时该值甚至可能包含28K人物 在这种极端的情况下 我收到以下错误 A system temporary ta
  • 无法加载 DLL“db2app64.dll”

    我正在写一个 NET框架应用程序并尝试连接到服务器上的 DB2 数据库 尝试时 我收到错误 System DllNotFoundException 无法加载 DLL db2app64 dll 找不到指定的模块 HRESULT 异常 0x80
  • 如何正确处理Java/JDBC中的InnoDB死锁?

    我在这里从事理论基础工作 我想确保我的所有基础都得到了覆盖 我已经阅读了大量有关 Java 的 InnoDB 的文章 以及无论您运行什么查询 死锁是如何发生的 尽管我对理论和最佳实践非常了解 但我对如何在发生死锁时实现重新发出事务的全部捕获
  • DB2 时间戳选择语句

    我正在尝试运行一个简单的查询 该查询根据时间戳获取数据 如下所示 SELECT FROM
  • 如何从 SQuirreL SQL 调用带有 OUT 参数的 DB2 存储过程?

    我真的很喜欢 SQuirreL SQL 作为 SQL 查询工具 但我一直无法让它调用我们的 AS 400 DB2 数据库中的存储过程 我总是收到错误 设置或注册的参数值的数量与参数的数量不匹配 我已经仔细检查了参数的数量 但没有运气 这是我
  • 返回 HTTP 503 来响应数据库死锁是否合适?

    服务器返回是否合适503 Service Unavailable 请求的操作何时导致数据库死锁 这是我的推理 最初我尝试避免数据库死锁 但我遇到了https stackoverflow com a 112256 14731 https st
  • 如何获取 DB2 MQT 上次刷新时间

    对于 z OS 上的 DB2 物化查询表 如何检索上次刷新时间 文档指出 http www 01 ibm com support knowledgecenter SSEPEK 10 0 0 com ibm db2z10 doc perf s
  • SQL - 抑制重复的*相邻*记录

    我需要运行一个 Select 语句 DB2 SQL 该语句不会根据某个字段提取相邻行重复项 具体来说 我想找出数据何时changes 这变得很困难 因为它可能会变回其原始值 也就是说 我有一个大致类似于下面的表格 按字母排序 然后按日期排序
  • TransactionScope 无法与 DB2 提供程序一起使用

    我一直在尝试使用交易范围 with a DB2数据库 使用DB2 Net提供商 v 9 0 0 2 和 c 2 0 根据 IBM 的说法 应该支持它们 我已经尝试了在 IBM 论坛上可以找到的所有建议 例如here http www ibm
  • DB2 400 落柱

    我想删除一个名为id这是一个自动递增的PK SQL alter table CO88GT XGLCTL drop column id cascade 我得到 Error SQL0952 Processing of the SQL state
  • 如何在 H2 中创建过程

    这似乎与具有相同标题的其他问题重复 但实际上并非如此 我们的业务逻辑主要作为 DB2 存储过程来实现 我看到 H2 有一个 DB2 兼容模式 很好 我们如何使用 H2 通过这些程序进行内存单元测试 不幸的是 H2 似乎缺少 CREATE P
  • 使用 r 写入和更新 DB2 表

    我不知道如何更新 R 中现有的 DB2 数据库或更新其中的单个值 除了非常一般的信息之外 我在网上找不到关于这个主题的太多信息 但没有具体的例子 library RJDBC teachersalaries data frame name c
  • 如何处理过时的连接?

    我们的应用程序是一个 J2EE 应用程序 在 Websphere 6 1 上通过 Mainframe DB2 后端使用 Struts EJB Hibernate 最近已投入生产 我们收到过时的连接异常当用户第一次或有时登录应用程序时 此异常
  • R 中的 sqlSave 创建数据帧并将其保存到 SQL 表

    您好 我正在使用 R 将数据框保存到 DB2 SQL 表中 我似乎能够创建表骨架 但无法将数据附加到表中 gt df lt read csv dat csv 其中 dat csv 是没有标题的 csv 只有两列中的原始数据 然后我创建表 g
  • 如何使用 Java 创建多个模式连接?

    我必须使用两个数据库 DB2 Oracle 我在 DB2 数据库中有一个名为NAVID 我想使用 Java 为 Oracle 中的所有表创建相同的架构 public class automateExport static String va
  • 如何识别 SQL Azure 中的死锁?

    我有一个由两个实例组成的 Windows Azure 角色 有时交易会失败并显示SqlException与以下文字 事务 进程 ID N 在锁资源上与另一个进程发生死锁 并被选为死锁牺牲品 重新运行事务 现在我已经谷歌搜索了一段时间并阅读这
  • DB2 vs PostgreSQL vs SQL Server [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 有人用过这三个数据库吗 你和他们有什么经历 PostgreSQL 对于一个项目来说看起来相当诱人 但我很想了解更多关于它的信息 我们是一家 NE
  • 为表多次指定了 xxx 列

    我正在尝试将 db2 简单查询调整为 SQL SERVER 该查询在 db2 上运行良好 select from pb console users u join select from pb console users user role

随机推荐

  • Karma 没有选择更改,必须运行测试两次

    我在跑步Jasmine测试Karma 最新 2014 年 12 月 0 日 来自智能IDEA 最新 13 1 2 OS X IntelliJ 仅使用 Karma 插件指向我的 karma 安装 usr local lib node modu
  • 在 AngularJS 中访问 Spring MVC 模型对象

    我有一个使用 JAVA Spring MVC 后端 和 AngularJS 前端 JSP 用于视图 和 MySQL DB 构建的 Spring MVC Web 表单 用户可以在填写表格后提交表格并搜索现有条目 提交条目后 还会向用户发送一封
  • Fire and no-wait (without do!) vs Fire and wait (do!) 有巨大的性能差异吗?

    以下代码运行大约需要 20 秒 然而 取消注释后不到一秒钟do 为什么会有这么大的差异呢 Update 使用时需要9秒ag Add 我已经更新了代码 open FSharpx Control let test let ag new Bloc
  • kafka 上的无限期日志保留

    我正在使用 kafka 进行事件溯源 我意识到我们仍然需要配置日志保留时间 即log retention hours 如果我想无限期保留所有消息 最好使用什么值 示例配置为log retention bytes设置为 1 我可以在中也使用
  • TabWidget在Android底层不稳定?为什么?

    我将 tabWidget 设置在底部 当我想编辑编辑文本时 键盘会升起 但选项卡小部件位于键盘上方 为了支持多屏幕 我设置了 android layout weight 1 0 之后 我遇到了这个问题 我在下面添加了布局代码 有什么想法可以
  • Mysql 密码已过期。无法连接

    我刚刚擦除了我的 Mac 并重新安装了 El Capitan 我现在很难连接到Mysql 完成 Web 服务器设置过程后 我创建了一个简单的 PHP 测试文件 当我运行它时 我收到此错误 Warning mysqli mysqli HY00
  • 如何在 PyQt4 中杀死单次 QtCore.QTimer?

    因此 在我的应用程序中 我创建了一个QtCore QTimer对象 然后调用singleShot方法在 60 秒后调用一个函数 现在 在任何给定的时间点 如果我需要致电singleShot再次使用该方法并防止以前的singleShot方法生
  • 文件 MD5 校验和

    In 这个问题 https stackoverflow com questions 392657 md5 hashing in delphi 2009提到了wcrypt2 我需要的只是计算文件的MD5 如果我可以计算它而不需要保存它那就完美
  • 中间件和 Blazor 组件的范围

    我正在开发服务器端 Blazor 应用程序 并遇到了有关范围服务的一些问题 为了简单起见 我使用默认的 Blazor 模板 带有计数器的模板 重新创建了我的问题 我有一个服务 CounterService 它将计数器初始化为 1 并公开该计
  • 无法设置经度从 -180 到 0 的 LatLngBounds

    当尝试设置新的 LatLngBounds 时 对于世界的西南四分之一 西南经度自动设置在世界的另一侧 导致 LatLngBounds 不一致 西南比东北更东 a new google maps LatLng 90 180 true a ln
  • 为什么 C#.net 中的表达式主体不能使用 int、double 或 bool 类型的属性?

    我有一个功能 private string GetPropertyName Expression
  • Xcode 无法解析依赖项 Firebase - GoogleAppMeasurement 与要求不匹配

    我是 Xcode 编码新手 我尝试在我的项目上安装 Firebase 但遇到一个错误 我不知道如何解决 我已遵循 Firebase 的所有说明 但仍然存在问题 首要问题 无法解析依赖关系 因为 GoogleAppMeasurement 没有
  • PluginApplicationException:无法应用插件类“FlutterPlugin”

    我遇到了奇怪的错误 升级 Android Studio 后 我创建了一个Android项目 运行成功 然后我尝试导入Flutter Module到这个Android项目 我有这些例外 块引用 原因 org gradle api intern
  • Qt 中的 ODBC 驱动程序使用

    我想使用读取和写入mdb文件 Ms Access 文件 我是全新使用的ODBC in Qt 那么有人可以帮助我知道我是否需要下载驱动程序 如果是的话我可以从哪里下载 如果您了解连接性 那么我们将提供任何帮助 如果您需要使用 Qt 访问 MS
  • scanf 并将 char 保留为整数

    我就是无法理解 Char 是整数 对吗 所以我可以做 int var scanf d var I 65 printf c var o A 为什么这样做是错误的 char var scanf d var I A printf d var O
  • eslint-config-airbnb 扩展名“.js”的文件中不允许使用 JSX

    我已经安装了eslint config airbnb https github com airbnb javascript tree master packages eslint config airbnb应该为 React 预先配置 ES
  • 如何在 Codesys v3 中创建指向函数的指针

    你能给我一个例子来说明如何在我的库中声明函数指针吗 如何将函数指针传递给外部库 TL DR 在 CoDeSys v3 中可以使用 Totes 而且非常简单 在 CoDeSys 中 函数 实际上是存储在函数表中的函数指针 在 CodeSys
  • NSMutableArray 无法添加到

    我以前也遇到过这样的问题 但没有得到满意的答案 我有一个视图控制器 它有一个名为 counties 的属性 它是一个 NSMutableArray 我将深入导航屏幕 找到有关选择县进行地理搜索的视图 因此 搜索页面会深入到 选择县 页面 I
  • 获取应用程序开发人员名称[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我想获取应用程序开发人员的名称 请有人告诉我如何得到这个 我尝试过 但只能获取已安装的应用程序及其图标 我想显示开发者名称 要获取已安
  • 如何在 DB2 上的多个表上使用 WHERE 条件执行安全的“SELECT FOR UPDATE”?

    Problem 在 DB2 版本 9 5 上的 SQL 语句 SELECT o Id FROM Table1 o Table2 x WHERE FOR UPDATE WITH RR 给我错误消息SQLSTATE 42829 不允许使用 FO