Oracle 觸發器詳解

2021-09-27 03:22:18 字數 1858 閱讀 8757

觸發器

資料庫觸發器是乙個與表相關聯的、儲存的pl/sql程式。每當乙個特定的資料操作語句(insert,update,delete)在指定的表上發出時,oracle自動地執行觸發器中定義的語句序列。

觸發器的型別

語法:

create[or

replace

]trigger 觸發器名

{delete

|insert

|update

[列名]

|on 表名

[for each row

[when

(條件)]]

plsql塊

示例:在emp表建立觸發器,插入資料時列印「成功插入新員工」

create

trigger firsttrigger

after

insert

on emp

declare

begin

dbms_output.put_line(

'成功插入新員工');

觸發器可用於

示例:限制非工作時間向資料庫插入資料

create

orreplace

trigger securityemp

before insert

on emp

declare

begin

if to_char(sysdate,

'day')in

('星期四'

,'星期六'

,'星期天'

)or to_number(to_char(sysdate,

'hh24'))

notbetween

8and

18then

-200001

,'不能在工作時間插入資料');

endif

;end

;

觸發語句與偽記錄變數的值

觸發語句

:old

:new

insert

所有欄位都是空(null)

將要插入的資料

update

更新以前該行的值

更新後的值

delete

刪除以前該行的值

所有欄位都是空(null)

示例:檢查emp表中sal的修改值不低於原值

create

orreplace

trigger checksal

before update

of sal on emp

for each row

declare

begin

if :new.sal < :old.sal then

-20002

,'更新後的薪水比更新前小');

查詢觸發器、過程及函式

oracle觸發器詳解

l 資料庫觸發器是乙個與表相關聯的 儲存的 pl sql 程式。每當乙個特定的資料操作語句 insert,update,delete 在指定的表上發出時,oracle 自動地執行觸發器中定義的語句序列。l l觸發器的型別 語句級觸發器 在指定的操作語句操作之前或之後執行一次,不管這條語句影響了多少行...

Oracle觸發器詳解

觸發器是特定事件出現的時候,自動執行的 塊。類似於儲存過程,觸發器與儲存過程的區別在於 儲存過程是由使用者或應用程式顯式呼叫的,而觸發器是不能被直接呼叫的。1.觸發器組成 觸發事件 引起觸發器被觸發的事件。例如 dml 語句 insert,update,delete 語句對錶或檢視執行資料處理操作 ...

觸發器詳解

觸發器是乙個特殊的儲存過程,不同的是儲存過程要用call來呼叫,而觸發器不需要使用call 也不需要手工啟動,只要當乙個預定義的事件發生的時候,就會被mysql自動呼叫。建立觸發器 語法如下 create trigger trigger name trigger time trigger event...