You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Oracle APEX 22.1批量删除行时数据版本冲突错误咨询

解决Oracle APEX 22.1交互式网格批量删除时的版本冲突错误

针对你遇到的批量删除主明细行时出现的Current version of data in database has changed since user initiated update process.错误,以下是几个可行的调整方案:

方案一:启用APEX的“忽略不存在行”删除设置

这是最直接的解决方案,让APEX跳过那些已经被数据库触发器删除的明细行,不再触发版本检查错误:

  • 打开目标页面,编辑交互式网格组件
  • 切换到「属性」面板的「高级」标签
  • 找到「删除时忽略不存在的行」(Delete Ignore Missing Rows)选项,设置为Yes
  • 保存页面后测试批量删除操作,APEX会自动忽略已被触发器删除的明细行,不再抛出冲突错误

方案二:将触发器逻辑迁移到APEX端处理

放弃数据库触发器自动删子行的逻辑,改为由APEX主动处理关联行删除,确保所有操作在APEX的跟踪范围内:

  1. 先禁用或删除数据库中主表的删除触发器
  2. 编辑交互式网格的「处理」流程,在默认的删除步骤前添加一个PL/SQL处理:
    • 处理类型选择「PL/SQL代码」
    • 输入以下代码(替换为你的表名和外键列):
      DELETE FROM 子表名称
      WHERE 外键列名 = :APEX$ROW_ID; -- 绑定当前主行的ID,若使用自定义主键,替换为对应网格列的绑定变量
      
  3. 保存页面后,APEX会先删除所有关联的明细行,再删除主行,全程跟踪操作状态,不会出现行不存在的冲突

方案三:关闭明细行的乐观锁检查(仅适合低并发场景)

如果前两个方案无法适用,可以关闭明细行的乐观锁验证,但会失去并发修改的保护:

  • 编辑交互式网格的「列」设置
  • 找到用于乐观锁的列(通常是ROWID或自定义的版本号列),将「乐观锁」属性设置为No
  • 保存后,APEX删除明细行时不会检查版本变化,即使行已被触发器删除也不会报错

内容的提问来源于stack exchange,提问作者smriti

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 07:17:24