触发器应用场景一: 根据业务逻辑限制某些操作__触发器应用场景二: 校验数据
/*
觸發(fā)器應(yīng)用場景一: 根據(jù)業(yè)務(wù)邏輯限制某些操作
限制非工作時間向數(shù)據(jù)庫插入數(shù)據(jù)
非工作時間: 星期六,星期日 <9:00? >18:00
select to_char(sysdate,'day') from dual;
select to_number(to_char(sysdate,'hh24')) from dual
*/
create or replace trigger securityEmp
before insert on emp
declare
?
begin
? if to_char(sysdate,'day') in ('星期六','星期日')
? or to_number(to_char(sysdate,'hh24')) not between 9 and 18 then
??? raise_application_error(-20001,'不能在非工作時間插入數(shù)據(jù)');
? end if;
end;
/
?
/*
觸發(fā)器應(yīng)用場景二: 校驗數(shù)據(jù)
漲工資后的值不能小于漲之前的值
update emp set sal = sal -100 where empno=1234;
觸發(fā)器應(yīng)用場景三: 數(shù)據(jù)的備份和同步
*/
create or replace trigger checkRaiseSalary
before update on emp
for each row
declare
begin
? if :new.sal < :old.sal then
??? raise_application_error(-20002,'漲工資后的值不能比漲之前的少!漲前:' || :old.sal || '? 漲后:' ||:new.sal);
? end if;
end;
/
?
總結(jié)
以上是生活随笔為你收集整理的触发器应用场景一: 根据业务逻辑限制某些操作__触发器应用场景二: 校验数据的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 在线求急
- 下一篇: 为指定的职工在原工资的基础上长10%的工