-
安全检查触发器
查看全部 -
触发器创建格式:
有for each row 就是行级触发器,没有则是语级触发器(语级触发器只触发一次不管涉及多少行数据; 行级触发器则是由多少行被改动就触发多少次)
查看全部 -
Oracle触发器创建语法 create trigger 触发器名 after insert //在执行插入数据之后触发 on 表名A //在执行表A插入数据之后触发 declare begin 触发之后做的操作 比如打印一句话:dbms_output.put_line('触发器被引动。'); end;
查看全部 -
触发器使用场景:数据的备份和同步
查看全部 -
触发器使用场景:基于值的审计功能
查看全部 -
触发器场景:数据的确认
查看全部 -
实施复杂的安全性验证:
查看全部 -
创建触发器的语法:
查看全部 -
触发器的具体应用场景:
复杂的安全性检查
禁止在非工作时间添加员工(周末、9~17之外的时间),使用语句级触发器
数据的确认:比如涨工资不能长成负的
数据库审计:类似于操作日志
数据的备份和同步:主从数据同步
查看全部 -
数据的备份和同步 几乎无延时
create table emp_back as select * from emp
create or replace trigger sync_salary_
after update
on emp
for each row
begin
update emp_back set sal = :new.sal where empno = :new.empno;
end;
/
查看全部 -
数据库的审计 -->基于值的审计
create table audit_info
(
information varchar2(200)
);
create or replace trigger do_audit_emp_salary
after update
on emp
for each row
begin
if :new.sal > 6000 then
insert into audit_info value (:new.empno||' '||:new.ename||' '||:new.sal);
end if;
end;
/
查看全部 -
create or replace trigger checksalary
before update
on emp
for each row
begin
if :new.sal < :old.sal then
raise_application_error(-20002,'**不能少于**');
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抛出错误
:old,:new分表表示语句级触发器中操作前的行的值和操作后的行的值
用法[ :old.column ]
查看全部
举报