-
安全檢查觸發器
查看全部 -
觸發器創建格式:
有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 ]
查看全部
舉報