首页 > 代码库 > 触发器
触发器
常用触发器
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;
触发器
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。