过程执行前的ORACLE触发器
ORACLE trigger before procedure execution
是否可以在特定过程开始执行之前触发触发器?
例如,我有一个包 "A"
,包 "A"
.
中有一个过程 "B"
所以当我调用 A.B 过程时,我想触发一个触发器。
我正在使用 Oracle 11gR2。
不能直接调用触发器。相反,当您执行 insert/update 或删除具有触发器的 table 时,它们会自动触发。因此,就像您的情况一样,在调用 A.B 过程时,您可以执行插入/更新或删除,这将强制触发触发器。
is it possible to fire a trigger before a specific procedure starts execution?
不,您不能 手动触发触发器而不对 DML 操作 table。触发器旨在隐式地作用于任何 DML 操作。 触发是动作的(侧面)效果,而不是动作本身。
我认为您的要求不需要触发器。您可以在执行过程 A.B
之前调用 过程 。相应地放置您的业务逻辑。 PL/SQL 是一种过程语言。所以,如果你在 A.B
之前放置另一个过程 say procedure C
,那么 A.C
将在 A.B
.
之前执行
如果您在 table 上有一个现有的触发器并且您希望它的逻辑在其他情况下执行,则将逻辑放在一个过程中并从触发器和任何其他代码中调用该过程需要执行它。
是否可以在特定过程开始执行之前触发触发器?
例如,我有一个包 "A"
,包 "A"
.
中有一个过程 "B"
所以当我调用 A.B 过程时,我想触发一个触发器。
我正在使用 Oracle 11gR2。
不能直接调用触发器。相反,当您执行 insert/update 或删除具有触发器的 table 时,它们会自动触发。因此,就像您的情况一样,在调用 A.B 过程时,您可以执行插入/更新或删除,这将强制触发触发器。
is it possible to fire a trigger before a specific procedure starts execution?
不,您不能 手动触发触发器而不对 DML 操作 table。触发器旨在隐式地作用于任何 DML 操作。 触发是动作的(侧面)效果,而不是动作本身。
我认为您的要求不需要触发器。您可以在执行过程 A.B
之前调用 过程 。相应地放置您的业务逻辑。 PL/SQL 是一种过程语言。所以,如果你在 A.B
之前放置另一个过程 say procedure C
,那么 A.C
将在 A.B
.
如果您在 table 上有一个现有的触发器并且您希望它的逻辑在其他情况下执行,则将逻辑放在一个过程中并从触发器和任何其他代码中调用该过程需要执行它。