-2

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

4

2 回答 2

0

只需在下方添加即可启用

ALTER TRIGGER trigger_name ENABLE

或 FOR 禁用

ALTER TRIGGER trigger_name 禁用

于 2012-12-26T06:32:26.503 回答
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 关键字如何隔离一个事件的活动。当您想要共享一些操作但不是全部时,请使用这些关键字。 了解更多

请记住,触发器让我们陷入可怕的混乱,正是因为它们的调用超出了我们的控制。仅将触发器用于最简单的操作。将复杂的逻辑构建到触发器中是不好的,原因有很多:

  1. 多行语句的性能可能很差
  2. 触发器是不可见的;开发人员在诊断问题时总是忘记检查它们
  3. 让触发器做他们不应该做的事情会导致可怕的混乱。
于 2012-11-15T07:17:59.987 回答