Python 3.x Oracle触发器在插入操作之前执行外部文件
我已经创建了Oracle触发器,它通过Python 3.x Oracle触发器在插入操作之前执行外部文件,python-3.x,oracle,oracle11g,oracle-sqldeveloper,database-trigger,Python 3.x,Oracle,Oracle11g,Oracle Sqldeveloper,Database Trigger,我已经创建了Oracle触发器,它通过DBMS\u调度程序执行外部python文件。运行\u JOB(),但它先执行python文件,然后将行插入表中。我想要完全相反的操作 CREATE OR REPLACE TRIGGER sample AFTER INSERT ON client BEGIN EXEC DBMS_SCHEDULER.RUN_JOB("JOB CONTAN PYTHON FILE"); END; 告诉我正确的方法你怎么知道的 想想看 你有桌子吗 那张桌子上有个扳机
DBMS\u调度程序执行外部python文件。运行\u JOB()
,但它先执行python文件,然后将行插入表中。我想要完全相反的操作
CREATE OR REPLACE TRIGGER sample
AFTER INSERT ON client
BEGIN
EXEC DBMS_SCHEDULER.RUN_JOB("JOB CONTAN PYTHON FILE");
END;
告诉我正确的方法你怎么知道的
想想看
- 你有桌子吗
- 那张桌子上有个扳机
- 将数据插入表并
- 。。。调用Python脚本
除非您证明我错了,否则一切都应该正常。插入表中的行与其他会话可见的行之间存在差异。在提交数据之前,任何其他事务都无法看到插入的行。如果您的python代码试图连接到数据库以查看这些行,它将看不到它们 同样,在触发器完成之前,您的事务不能向客户机(在您的示例中是SQL开发人员)报告插入成功。在这种情况下,它需要等到python调用完成后再返回
一般来说,触发器被认为是“坏习惯”,尽管它们确实有一些好的应用。在外部任务上进行会话等待也是需要避免的。我建议你重新考虑一下你想要实现的目标 我正在使用OracleSQLDeveloper,并通过GUI将值直接插入到表中。但当我单击提交按钮时,它会启动触发器执行python脚本,如果该脚本得到执行,则会显示已提交的插入操作。若python脚本继续运行,Oracle将不会在表中插入并反映结果。我想创建一个应用程序,在每次插入后都会产生结果。我已经准备好python脚本,但哪种方法合适。请帮助我