oracle 10g 学习之触发器(13)

真实使用场景:数据备份

1. 触发器的 helloworld: 编写一个触发器, 在向 emp 表中插入记录时, 打印 'helloworld'

 

create or replace trigger emp_trigger

       after insert on emp

       for each row

begin

       dbms_output.put_line('helloworld');

end;

2. 行级触发器: 每更新 employees 表中的一条记录, 都会导致触发器执行

 

create or replace trigger employees_trigger

       after update on employees

       for each row--行级触发器

begin

       dbms_output.put_line('修改了一条记录!');

end;

 

3.语句级触发器: 一个 update 语句只使触发器执行一次

 

create or replace trigger employees_trigger

       after update on employees

begin

       dbms_output.put_line('修改了一条记录!');

end;

4. 使用 :new, :old 修饰符

 

create or replace trigger employees_trigger

       after update on employees

       for each row

begin

       dbms_output.put_line('old salary: ' || :old.salary || ', new salary: ' || :new.salary);

end;

5. 编写一个触发器, 在对 my_emp 记录进行删除的时候, 在 my_emp_bak 表中备份对应的记录

 

1). 准备工作:

         create table my_emp as select employee_id id, last_name name, salary sal from employees

         create table my_emp_bak as select employee_id id, last_name name, salary sal from employees where 1 = 2

 

2).

create or replace trigger bak_emp_trigger

       before delete

       on my_emp

       for each row

      

begin

       insert into my_emp_bak values(:old.id, :old.name, :old.sal);

end;

posted @ 2013-12-11 22:19  学亮  阅读(342)  评论(0编辑  收藏  举报