資料庫觸發器是乙個與表相關聯的、儲存的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 ...