在程序执行之前触发ORACLE

时间:2015-05-07 06:33:10

标签: oracle stored-procedures plsql triggers

是否可以在特定程序开始执行之前触发扳机? 例如,我有一个包(?=Title)(.*?)(?=Country),以及包"A"内的程序"B" 因此,当我打电话给A.B程序时,我想触发一个触发器 我正在使用oracle 11gR2。

3 个答案:

答案 0 :(得分:3)

  

是否可以在特定程序开始执行之前触发一个触发器?

不,您无法 手动触发触发器而不对表执行任何 DML 操作。触发器旨在隐式执行任何DML操作。 触发器是动作的()效果,而不是动作本身。

我认为你不需要触发你的要求。在执行过程A.B之前,您可以调用过程。相应地放置您的业务逻辑。 PL / SQL是一种过程语言。因此,如果您在C之前再设置另一个程序A.B,那么A.C将会在A.B之前执行。

答案 1 :(得分:1)

无法直接调用触发器。相反,当您在具有触发器的表上执行插入/更新或删除时,它们会自动触发。因此,在您的情况下,在调用A.B过程时,您可以执行插入/更新或删除,这将强制触发器触发。

答案 2 :(得分:0)

如果表上有现有触发器并且您希望在其他情况下执行其逻辑,则将逻辑放在过程中并从触发器和需要执行它的任何其他代码调用该过程。