是否可以编写触发器来激活另一个触发器?或者我可以将 2 个触发器放入 1 个触发器中吗?
问问题
58 次
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 关键字如何隔离一个事件的活动。当您想要共享一些操作但不是全部时,请使用这些关键字。 了解更多。
请记住,触发器让我们陷入可怕的混乱,正是因为它们的调用超出了我们的控制。仅将触发器用于最简单的操作。将复杂的逻辑构建到触发器中是不好的,原因有很多:
- 多行语句的性能可能很差
- 触发器是不可见的;开发人员在诊断问题时总是忘记检查它们
- 让触发器做他们不应该做的事情会导致可怕的混乱。
于 2012-11-15T07:17:59.987 回答