Oracle學習筆記第十九天

2021-09-07 08:07:04 字數 2597 閱讀 3355

**特性: ** 不需要顯示呼叫來執行,而是由乙個事件來啟動執行

啟動事件包括:

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本身是素數,...

設計模式學習第十九天

命令模式 模式是從 中而來的,就是 的靈活的排列組合,模式不應為了講清的特設環境而迷惑,而要實踐,最好的就是專案,沒有專案之前就是敲 提高沒有捷徑,就是敲 我對命令特設環境的思路 烤肉者儲存乙個命令的引用,主要作用就是執行繼承父類的子類的命令的執行,依靠遍歷服務員過來的集合進行按個執行 服務員類利用...