行級觸發器與語句級觸發器的區別

2021-07-04 07:09:31 字數 1450 閱讀 3629

語句:update

employees

setemployees.salary =

2000

;語句級觸發器:

--測試行級觸發器,預設情況下是語句級的

create

orreplace

trigger

test_row_trigger

before

update

onemployees

declare

begin

dbms_output.put_line(

'update1111'

);end

;

行級觸發器:

--測試行級觸發器

create

orreplace

trigger

test_row_trigger

before

update

onemployees

foreach

rowdeclare

begin

dbms_output.put_line(

'update1111'

);end

; employees的資料:

1、語句級觸發器:

結果:

如果使用的是語句級觸發器,那麼觸發器只會在相應的語句(eg:update)執行或者是執行之後執行一次。一般情況下不會這樣使用。

2、行級觸發器

可以看到,在執行了

update

employees 

setemployees.salary = 

2000

,之後執行了6次。

如果把語句改為:

update

employees

setemployees.salary =

2000

where

employees.employee_id =

'1'or

employees.employee_id =

'2';結果是:

一共執行了兩次,也就是說相應的語句(eg:update)有影響到幾行記錄,就執行幾次觸發器。

3、其他區別

(1)行級觸發器能夠通過:new.屬性 和 :old.屬性等獲得update或者insert發生之前的新值和發生值之後的舊值。

ORACLE觸發器 行級觸發器

行級觸發器 本章介紹行級觸發器機制。大部分例子以insert出發器給出,行級觸發器可從insert update delete語句觸發。1 介紹 觸發器是儲存在資料庫已編譯的儲存過程,使用的語言是pl sql,用編寫儲存過程一樣的方式編寫和編譯觸發器。下面在sql plus會話中建立和示例乙個簡單的...

行級觸發器

行級觸發器 1觸發器使用for each row選項 2行級觸發器進行dml操作時,每作用一行就觸發一次。行級觸發器分類 1before行級觸發器 為了確保資料符合商業邏輯和企業規劃,應該使用約束對輸入資料加以限制。在某些情況下約束無法實現複雜的商業邏輯和企業規範,這時候可以使用before行級觸發...

Oracle觸發器介紹 行級觸發器

行級觸發器 本章介紹行級觸發器機制。大部分例子以insert出發器給出,行級觸發器可從insert update delete語句觸發。1 介紹 觸 髮器是儲存在資料庫已編譯的儲存過程,使用的語言是pl sql,用編寫儲存過程一樣的方式編寫和編譯觸發器。下面在sql plus會話中建立和示例一 個簡...