一个简单的oracle触发器
先要打开oracle的输出设置 set serveroutput on
/* 插入一条记录后,自动打印“成功插入一个员工” */ create or replace trigger firstTrigger after insert on emp begin dbms_output.put_line('成功插入一个员工'); end; /
触发器示例一
/* 实施复杂的安全性检查 限制非工作时间向数据库插入(emp)数据: 周末: to_char(sysdate,'day') in ('星期六','星期日') 上班前,下班后:to_number(to_char(sysdate,'hh24')) not between 9 and 18 */ create or replace trigger securityEmp before insert on emp begin if to_char(sysdate,'day') in ('星期六','星期日','星期三') or to_number(to_char(sysdate,'hh24')) not between 9 and 18 then raise_application_error(-20001,'不能在非工作时间插入数据'); end if; end; /
触发器示例二
/* 确认数据(涨后的薪水不能少于涨前的薪水) */ create or replace trigger checksal before update on emp for each row begin if :new.sal < :old.sal then raise_application_error(-20001,'涨后的薪水不能少于涨前的薪水.涨前:'||:old.sal||' 涨后:'||:new.sal); end if; end; /
特别地在此解释:old 和 :new的含义
触发器实例三
--实现数据的同步备份 --给员工涨工资 --> 备份端 create or replace trigger syncsal after update on emp for each row begin update remoteemp set sal=:new.sal where empno=:new.empno; end; /