一、五種觸發器:語句觸發器,行觸發器,instead of觸發器,系統事件觸發器,用戶事件觸發器。
1.語句觸發器
create tableemp_copy asselect empno,ename,job,sal from emp;
create tableemp_copy_log(who varchar2(30),when date);
create triggerbiufer_emp_copy
before insert orupdate or delete
on emp_copy
begin
insert into emp_copy_logvalues(user,sysdate);
end;
/
update emp_copy setsal=sal*2.0;
select *fromemp_copy_log;
2.行觸發器
create tableperson(
personID numberprimary key,
personNamevarchar2(20));
create sequenceperson_seq;
create triggerbifer_person_personID_pk
before insert onperson
for each row
begin
select person_seq.nextval
into:new.personID from dual;
end;
/
insert intoperson(personName) values('Athos');
insert intoperson(personID,personName) values(5678,'Porthos');
insert intoperson(personName) values('Aramis');
select * fromperson;
3.instead of觸發器
create or replaceview emp_job
as
selectempno,ename,job from emp;
create triggerupdate_emp_job_view1
instead of update on emp_job
begin
update emp
set empno=:new.empno,
ename=:new.ename,
job=:new.job
where empno=:old.empno;
end;
4.系統事件觸發器:orcle系統允許開發人員建立與特定系統事件相關的觸發器,特定事件如下:數據庫啓動,數據庫關閉,服務器錯誤等。
create trigger ad_startup
after startup ondatabase
begin
--pl/sql代碼
end;
5.用戶事件觸發器
create tabledrop_objects(
object_name varchar2(30),
object_type varchar2(30),
dropped_on date
);
create or replace
trigger lo_drop_trigger
before drop on lzm.schema
begin
insert into drop_objects
values(ora_dict_obj_name,ora_dict_obj_type,sysdate);
end;
/
create tabledrop_table(col1 number,col2 number);
create viewview_drop_table(columnA,columnB)
as
select col1,col2
from drop_table;
drop viewview_drop_table;
drop tabledrop_table;
select * fromdrop_objects;
二、禁用觸發器:
altertrigger<trigger_name> disable;
altertrigger<trigger_name> enable;
三、查看觸發器信息
selecttrigger_name,table_name from user_triggers;