周末:to_char(sysdate,'day') in('星期六','星期日')
非上班时间:to_number(to_char(sysdate,'hh24')) not between 9 and 18
create or replace trigger trg
before insert
on table
begin
if to_char(sysdate,'day') in('星期六','星期日' or to_number(to_char(sysdate,'hh24')) between 9 and 18 then
raise_application_error(-20001,'加毛线班')
end if;
end;
/
安全检查触发器
实施复杂的安全性验证:
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,'禁止在非工作时间') --自定义错误代码2w到2w0999;
end;
/
create or replace ttrigger secuurity emp 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;
raise application_error():
触发器应用场景1如下:
触发器的运用场景:
1、复杂的安全性检查
2、数据的确认
3、数据的审计
4、数据的备份与同步
应用层自己定义的异常的代码是-20001到-20999
实施复杂的安全检查:
触发器案例一:复杂的安全性检查
1,禁止在非工作时间插入数据
--禁止在非工作时间插入新员工
select sysdate from dual; --SYSDATE
select to_char(sysdate,'day') from dual;--查看系统时间是星期几
1, 周末:to_char(sysdate,"day")in('周六','周日')
2, 上班前,下班后 to_number(tochar(sysdate,'hh24'))not between 9 and 18 select to_char(sysdate,'hh24') from dual;
select to_number(to_char(sysdate,'hh24'))from dual;
函数:raise_application_error(error_code,error_messege);
error_code要小于-20000