现在的位置: 首页 > 综合 > 正文

oracle触发器示例

2014年04月05日 ⁄ 综合 ⁄ 共 891字 ⁄ 字号 评论关闭

一个简单的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;
/

抱歉!评论已关闭.