Oracle 触发器在插入操作之前执行外部文件

Oracle trigger executing external file before insert operation

我创建了通过 DBMS_SCHEDULER.RUN_JOB() 执行外部 python 文件的 Oracle 触发器,但它首先执行 python 文件,然后将行插入 table.I 想要完全相反的操作。

CREATE OR REPLACE TRIGGER sample
AFTER INSERT ON client

BEGIN

  EXEC DBMS_SCHEDULER.RUN_JOB("JOB CONTAN PYTHON FILE");

END;

告诉我正确的方法

你怎么知道的?

想想!

  • 你有一个table
  • 上面有一个触发器 table
  • 当您将数据插入 table 和 ...
  • 时触发
  • ...调用 Python 脚本

那么,如果恰恰是该操作(插入行)触发并 运行 在 运行 插入行之前 Python 脚本?

除非你证明我错了,否则一切都应该没问题。

插入 table 的行与其他会话可见的行之间存在差异。在提交数据之前,任何其他事务都看不到那些插入的行。如果您的 python 代码尝试连接到数据库以查看这些行,它不会看到它们。

同样,在触发器完成之前,您的事务无法向客户端(在您的情况下 SQL 开发人员)报告插入成功。在这种情况下,它需要等到 python 调用完成后再返回。

通常认为触发器 'bad practice',尽管它们确实有一些很好的应用。让会话等待外部任务也是要避免的事情。我建议您重新考虑您要实现的目标的方法。