【问题标题】:What is meant by PRAGMA AUTONOMOUS_TRANSACTION?PRAGMA AUTONOMOUS_TRANSACTION 是什么意思?
【发布时间】:2018-11-19 06:33:52
【问题描述】:

我需要对 pragma 自治事务有一个清晰的认识。我在触发器中使用了重叠选择查询并在过程中使用了插入查询。如果我在单个文件中导入两条记录,则第二条记录与第一条记录相同,因此第二条记录应显示为重叠错误。现在trigger中的select查询执行了,但是使用pragma自治事务没有抛出错误。

【问题讨论】:

    标签: oracle plsql transactions


    【解决方案1】:

    AUTONMOUS_TRANSACTION 是一个嵌套事务。它独立于调用事务执行 DML。因此,在自治事务中发出的查询不会在外部事务中看到任何未提交的更改。这就是您看不到错误消息的原因:无效状态仅存在于事务未提交的更改中。

    显然您正在使用AUTONMOUS_TRANSACTION 来避免变异表错误。但是,更好的解决方案是使用 COMPOUND DML 触发器:使用 FOR EACH ROW 将更改存储在数组中,然后在 AFTER 语句阶段验证它们是否没有重叠。 Find out more

    【讨论】:

      猜你喜欢
      • 2022-01-04
      • 2012-04-28
      • 2011-03-29
      • 1970-01-01
      • 2010-12-27
      • 2011-08-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多