Oracle觸發器 慕課網學習筆記

2021-07-10 03:47:05 字數 2684 閱讀 8458

資料庫觸發器是乙個與表相關聯的、儲存的pl/sql程式。

作用:每當乙個特定的資料操作語句(insert、update、delete)在指定的表上發出時,oracle自動的執行觸發器中定義的語句序列。

複雜的安全性檢查

資料的確認

資料庫審計

完成資料的備份和同步

create [or replace] trigger 觸發器名

on 表名

[for each row[when(條件)]] //用來指明觸發器的型別是什麼 有就是行級

plsql塊

比如這條sql:insert into emp10 select * from emp where deptno=10;

像emp10表中插入了3條記錄;

語句級觸發器:針對是表 執行一次

在指定的操作語句操作之前或者之後執行一次,不管這條語句影響了多少行。

行級觸發器:針對是行 執行三次 for each row

觸發語句作用的每一條記錄都被觸發。在行級觸發器中使用:old和:new偽記錄變數,識別值的狀態

每當成功插入新員工後,自動列印「成功插入新員工」(觸發器單詞:trigger)

create

trigger saynewemp

after

insert

on emp

declare //沒有定義變數可刪除不寫

begin

dbms_output.put_line('成功插入新員工');

end;

/

禁止在非工作時間插入新員工

to_char(sysdate,'day') in ('星期六','星期日')//週末

to_number(to_char(sysdate,'hh24')) not between 9

and18

//下班時間

select sysdate from dual//取出系統當前時間

select to_char(sysdate,'day') from dual //取出當前星期幾

select to_number(to_char(sysydate,'hh24')) from dual//取出當前時間

create

orreplace

trigger securityemp

before

insert

on emp

begin

if to_char(sysdate,'day') in ('星期六','星期日')or

to_number(to_char(sysdate,'hh24')) not between 9

and18

endif;end;

/

漲工資不能越漲越少

1 :old和:new代表的是同一條記錄

2 :old表示操作該行之前,這一行值

3 :new表示操作該行之後,這一行值

create

orreplace

trigger checksalary

before

update

on emp

begin

foreach

rowif :new.sal<:old.sal then

end;

/

給員工漲工資,當漲後的薪水超過6000塊的時候,審計員工資訊

//建立表,使用者儲存審計資訊

create

table audit_info

(information varchar2(200)

)

create

orreplace

trigger do_audit_emp_salary

after

update

on emp

foreach

rowbegin

if :old.sal>6000

then

insert

into audit_info values(:new.empno||' '||:new.ename||' '||:new.sal);

endif;

end;

/

//利用觸發器實現資料的同步

//建立備份表

create

table emp_back as

select * from emp;

//當員工張完工資後,自動備份新的工資到備份中去

create

orreplace

trigger sync_salary

after

update

on emp

foreach

rowbegin

update emp_back set sal=:new.sal where empno=:new.empno;

end;

/

oracle觸發器學習

下面介紹乙個簡單的觸發器例子,觸發器實現向a表插入資料的時候,自動向b表插入資料。1.先建立a,b兩個表 create table a stdid int,stdname varchar2 10 create table b stdid int,stdname varchar2 10 2.建立觸發器...

ORACLE觸發器學習

第一節 觸發器簡介 具備某些條件,由資料庫自動執行的一些 dml 操作行為。第二節 語句觸發器 語句觸發器針對整個表,作用整個表操作 語法結構 create trigger 觸發器名稱 before after 觸發動作 on 作用物件 觸發器謂詞 inserting updating deleti...

node 慕課網學習

簡寫 npm i 安裝 npm un 刪除 path.dirname node a b c 1.jpg 擷取路徑 結果是 node a b c path.basename node a b c 1.jpg 擷取路徑後面的 結果 1.jpg path.extname node a b c 1.jpg ...