作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
好的,我是 Oracle PL/SQL 的新手,我偶然发现了一个我无法弄清楚的问题。
我有一个程序可以将数据从一个表传输到另一个表,还有一个触发器在插入第二个表时激活。我使用 安排该程序每分钟运行一次(用于测试 - 一旦我想通了,就会每天运行一次)。 DBMS_JOB.SUBMIT - 预定的部分工作正常,但是在程序完成后触发器不会被触发。我尝试了前后插入子句,但它仍然不起作用。如果我直接调用该过程,它就可以工作,并且确实可以很好地触发触发器。所以......我已经想知道预定程序是否可以触发触发器?!
这是时间表的代码:
DECLARE
VJOBN BINARY_INTEGER;
BEGIN
DBMS_JOB.SUBMIT(
JOB => VJOBN,
INTERVAL => 'SYSDATE + 1/2880',
WHAT => 'BEGIN my_procedure(); END;'
);
END;
create or replace TRIGGER TO_PRJ
AFTER INSERT ON PROJECTS
FOR EACH ROW
BEGIN
IF INSERTING
THEN DBMS_OUTPUT.PUT_LINE('INSERTED PROJECT WITH ID: '||:NEW.PROJECT_ID||')
END IF;
END;
最佳答案
DBMS_OUTPUT
和 DBMS_JOB
不要以您尝试使用它们的方式工作。预定的作业可能正在运行,触发器正在触发 - 但由于 DBMS_OUTPUT
需要在执行 DBMS_OUTPUT
的 session 中激活命令(即 DBMS_JOB
使用的内部 session )您将永远看不到任何输出。DBMS_OUTPUT
的输出在整个 session 中不可见,因此发出 DBMS_JOB.submit
的 session 命令不会收到输出,即使 DBMS_OUTPUT
为该 session 激活。
关于Oracle PL/SQL : a scheduled procedure, 导致触发触发器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8263429/
我是一名优秀的程序员,十分优秀!