使用触发器激活触发器

时间:2012-11-15 05:52:26

标签: oracle plsql

是否可以编写触发器来激活另一个触发器?或者我可以将2触发器置于1触发器中吗?

2 个答案:

答案 0 :(得分:0)

当适当的DML针对其表发出问题时触发。没有调用触发器的概念。

如果您想跨差异事件共享代码,这很容易做到:

create or replace trigger ins_upd_emp 
before insert or update on emp
for each row
begin
     --  do this only for new records
     if inserting then
          :new.id := emp_seq.nextval;
     end if;

     --  do this for all records
     :new.last_activity_user := user;
     :new.last_activity_date := sysdate;
end;

请注意INSERTING关键字如何隔离一个事件的活动。如果要共享某些操作但不是所有操作,请使用这些关键字。 Find out more

请记住触发器让我们陷入可怕的混乱,正是因为他们的召唤不受我们的控制。仅对最简单的操作使用触发器。将复杂逻辑构建为触发器的原因有很多,原因如下:

  1. 多行语句的表现可能不佳
  2. 触发器是不可见的;开发人员在诊断问题时总是忘记检查它们
  3. 制造触发器做他们不应该做的事情导致可怕的kludges。

答案 1 :(得分:0)

只需添加以下即可启用

ALTER TRIGGER trigger_name ENABLE

或禁用

ALTER TRIGGER trigger_name DISABLE