**特性: ** 不需要顯示呼叫來執行,而是由乙個事件來啟動執行
啟動事件包括:
1. insert、update 及 delete 操作火堆檢視進行類似的操作。
2. 執行ddl操作(create、drop、alter、)
3. 資料庫的啟動與關閉
-- 建立觸發器的語法
create[or
replace
]trigger trigger_name
after
| before | instead of
-- 觸發器的模式 是在什麼時候觸發
[insert][
[or]update
[of column_list]][
[or]delete
]-- 觸發器觸發情況
on table_or_view_name -- 表或檢視的名稱
[referencing ]
-- 操作的資料是完成前的資料還是完成後的資料,new是完成後的值,old是完成前的值。
[for each row
]-- 是否是每行的,是的話就是行級觸發器,不是的話就是語句觸發器
[when
(condition)
]-- 判斷條件,條件為真則觸發觸發器
pl/sql_block;
-- pl/sql塊
觸發器一定是基於表或者檢視
新增一定是操作完成後的值,
when 條件中資料變數不用加:
plsql中操作的資料需要加上: ,取值方式::new.欄位名或者是 :lod.欄位名
觸發器型別
觸發後執行模式
模式(ddl)觸發器
在模式中執行ddl語句時執行
資料庫級觸發器
在發生開啟、關閉、登入和退出資料庫等系統事件是執行
dml觸發器
在對錶或試圖執行dml語句時執行
行級觸發器
對dml語句修改的每個行執行一次
語句級觸發器
無論受影響的行數是都少,都執只行一次
instead of觸發器
用於使用者不能直接使用dml語句修改的檢視
-- 行級觸發器中使用old變數
---依據現有表建立出員工備份表
create
table emp_bak
asselect
*from emp where1=
2;-- where 1=2 表示where後面的條件是false,所有資料都不會複製過去,只會複製表結構。
---建立觸發器,一旦有資料刪除,自動備份到備份表中
create
orreplace
trigger trg_bak
before delete
-- 觸發模式:在刪除前觸發
on emp
for each row
when
(old.deptno <>10)
--判斷條件,這裡條件是自己設定的,這裡設定的條件是當刪除的資料的deptno的值為10時不觸發觸發器。
begin
--備份資料
insert
into emp_bak(empno,ename,job,sal,deptno)
values
(:old.empno,:old.ename,:old.job,:old.sal,:old.deptno)
;--提交事務
commit
;end
;----啟用觸發器 這個觸發器是備份刪除的資料,所以這裡刪除表的資料就是啟用觸發器。
delete
from emp;
-- 行級觸發器中使用new變數
---建立表跟蹤員工工資的變化
create
table
emp_sal_change(empno number(4)
, ename varchar2(20)
, old_sal number(8,
2), new_sal number(8,
2));
----建立觸發器
create
orreplace
trigger trg_sal
after
update
on emp -- 在更新後觸發
for each row
begin
insert
into emp_sal_change
values
(:new.empno,:new.ename,:old.sal,:new.sal)
;---提交
commit
;end
;----啟用觸發器
update emp set sal = sal +
100where deptno =10;
----查詢資料
select
*from emp_sal_change;
冥想第十九天
不能怪自己多心,畢竟出現不舒服的感覺是因為大腦太關切自己的身體了。一點也不想讓它受刺激。今天出來玩了,早上做了體檢。又帶著小妞妞出來打了預防針,後又跟著朋友出來滎陽南嶺玩了,到時有點困,告訴自己要接受,好好接受當下 但不反抗,知道是正常的。坐上車後睡了一會,所有的精力都回來了。當和朋友一起回來的時候...
ACM 第十九天
積性函式o n 線性篩,篩素數,u n 尤拉函式 n n 1 vis 0 vis 1 1,mu 1 1,phi 1 1 2 for rg int i 2 i n i 7else mu k mu i phi k phi i phi prime j 8 9 可以發現,線性篩分為3部分 1.n本身是素數,...
設計模式學習第十九天
命令模式 模式是從 中而來的,就是 的靈活的排列組合,模式不應為了講清的特設環境而迷惑,而要實踐,最好的就是專案,沒有專案之前就是敲 提高沒有捷徑,就是敲 我對命令特設環境的思路 烤肉者儲存乙個命令的引用,主要作用就是執行繼承父類的子類的命令的執行,依靠遍歷服務員過來的集合進行按個執行 服務員類利用...