------------------------------------------------触发器 begin---------------------------------
29. 触发器的 helloworld: 编写一个触发器, 在向 emp 表中插入记录时, 打印 'helloworld'
create or replace trigger emp_trigger after insert on emp for each row begin dbms_output.put_line('helloworld'); end; 30. 行级触发器: 每更新 employees 表中的一条记录, 都会导致触发器执行 create or replace trigger employees_trigger after update on employees for each row begin dbms_output.put_line('修改了一条记录!'); end;
语句级触发器: 一个 update 语句只使触发器执行一次
create or replace trigger employees_trigger after update on employees begin dbms_output.put_line('修改了一条记录!'); end;
31. 使用 :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;
32. 编写一个触发器, 在对 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;
------------------------------------------------触发器 end---------------------------------