gpt4 book ai didi

sql - 如何在 Oracle 中定义触发器 ON COMMIT?

转载 作者:行者123 更新时间:2023-12-03 11:52:28 25 4
gpt4 key购买 nike

oracle 数据库中是否有任何方法可以定义触发器,该触发器将在 COMMIT 之前同步触发(如果抛出异常,则为 ROLLBACK),以防指定表发生更改?

最佳答案

Oracle 中没有 ON COMMIT 触发机制。但是有解决方法:

  • 您可以使用带有 ON COMMIT REFRESH 的物化 View 并向该 MV 添加触发器。这将允许您在提交时修改基表时触发逻辑。如果触发器引发错误,事务将回滚(您将丢失所有未提交的更改)。
  • 您可以使用 DBMS_JOB 将操作推迟到提交之后。这将是一个异步操作,并且在某些情况下可能是可取的(例如,当您想在交易成功后发送电子邮件时)。如果回滚主事务,作业将被取消。作业和主 session 是独立的:如果作业失败,主事务将不会回滚。

  • 在您的情况下,您可能可以使用选项(1)。我个人不喜欢在触发器中编写业务逻辑,因为它增加了很多复杂性,但从技术上讲,我认为这是可行的。

    关于sql - 如何在 Oracle 中定义触发器 ON COMMIT?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4098771/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com