首页 > 代码库 > 触发器

触发器

常用触发器

 1 -- 行级触发器 2  3 --当对一个emp进行删除时将原数据进行备份 4 --创建备份表 5 create table emp_BAk as select * from emp; 6 truncate table emp_BAk; 7 -- 触发器 8 create or replace trigger bak_emp  9 before delete  -- 在删除之前 10 on emp   --触发器作用在emp表上11 for each row -- 标识为行级触发器,也就是每影响一行就执行一次12 -- 触发器的主体部分13 declare14 begin15   insert into emp_BAk values(:old.empno,:old.ename,:old.job,:old.mgr,:old.hiredate,:old.sal,:old.comm,:old.deptno);16 end;17 -- 删除数据时,会将删除的数据保存到emp_BAk表中18 delete emp where empno = 7369;19 --把删除的数据恢复到原表中20 insert into emp select * from emp_bak;21 --清除备份表22 truncate table emp_bak;23 24 25 -- 语句级触发器26 -- 当插入、更新、删除emp表时进行显示信息27 create trigger show_emp_info 28 after delete or insert or update29 on emp30 --for each row -- 不要这条命令就是语句级触发器31 declare32 33 begin34   if updating then35     dbms_output.put_line(触发器提示:更新emp表中数据);36   elsif deleting then37     dbms_output.put_line(触发器提示:删除emp表中数据);38   elsif inserting then39     dbms_output.put_line(触发器提示:插入emp表中数据);40   end if;41 end;42 -- 测试43 update emp set sal = 500 where empno = 7369;44 delete emp where empno = 7369;45 insert into emp select * from scott.emp where empno = 7369;46 47 48 -- 模式触发器(确保你的数据库中有archer用户)49 create table archer_event(50 event nvarchar2(20),51 username varchar2(10),52 owner varchar2(10),53 objname varchar2(20),54 objtype varchar2(20),55 datetime date56 );57 58 create or replace trigger tr_archer59 after ddl60 on archer.schema61 declare62 63 begin64   insert into archer_event values(ora_sysevent,ora_login_user,65   ora_dict_obj_owner,ora_dict_obj_name,ora_dict_obj_type,sysdate);66 end;67 -- 当archer用户创建数据表时会将信息保存到archer_event表中68 create table abc(69 id number,70 name varchar2(10)71 );72 -- 查看表中的数据73 select * from archer_event;

 

触发器