13oracle之觸發器trigger

2021-09-26 13:29:36 字數 2359 閱讀 9116

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

解釋:

換句話說:觸發器就是在執行某個操作(增刪改)的時候觸發乙個動作(一段程式)。

建立觸發器語法:

create  [or replace] trigger  觸發器名

on 表名

[for each row [when(條件) ] ]

plsql 塊

解釋:

示例:每當dept表中新增了一位新部門時,列印」成功插入新部門」

create or replace trigger tri_adddept

after insert

on dept

declare

begin

dbms_output.put_line('插入了新部門');

end ;

--測試哈

select * from dept;

insert into dept values(80,'itcast1','上海');

select * from dept;

目標:演示語句級觸發器和行級觸發器的區別

複製出來一張表depttemp,分別建立語句級和行級觸發器,然後進行批量插入操作測試。

create table depttemp as select * from dept where 1<>1;

select * from depttemp;

兩個觸發器編寫:

–語句級別

create or replace trigger tri_adddepttemp_yuju

after insert on depttemp

declare

begin--plsql語句

dbms_output.put_line('成功插入了乙個部門:語句級觸發器觸發了。。:');

end tri_adddepttemp_yuju;

–行級別:

create or replace trigger tri_adddepttemp_hangji

after insert on depttemp

for each row--行級觸發器

declare

begin--plsql語句

dbms_output.put_line('成功插入了乙個部門:行級觸發器觸發了。。:');

end tri_adddepttemp_hangji;

批量插入資料測試:

–先建立兩種觸發器

–批量插入資料

insert into depttemp select * from dept;

語句級觸發器,對錶的乙個完整操作才會觸發一次。

簡單的說:行級觸發器,是對應行操作的;語句級觸發器,是對應表操作的。

行級別觸發器的偽記錄變數:

:new代表操作之後的資料,只出現在insert/update中,

:old代表操作(cud)之前的那條資料,出現在update/delete,

insert時:new表示新插入的行資料,update時:new表示要替換的新資料,:old表示要被更改的原來資料,delete時:old表示要被刪除的資料。

示例:

--漲工資:漲後的工資不能少於漲前的工資

create or replace trigger tri_checkempsal

before update on emp--更新之前攔截觸發

for each row--行級觸發器

declare

begin

--如果漲後小於漲前,則,終止更新操作

if :new.sal<:old.sal then>

--終止程式繼續執行,也就終止了更新操作了。 -20001-20999隨便寫

--相當於丟擲異常(throw),(使用了oracle內建的乙個函式來丟擲異常)

end if;

end tri_checkempsal;

但是要注意:觸發器會引起鎖,降低效率!使用時要慎重。如無必要,盡量不要使用觸發器。

oracle之觸發器

1 oracle中觸發器是當進行操作時觸發事情,進行處理。例如進行對資料表進行插入 更新和刪除時進行觸發事情處理。定義觸發器的是 create or replace trigger before after insert update delete on 資料庫表名 for each row 這是表...

Oracle之觸發器

資料庫觸發器是乙個與表相關聯的 儲存的pl sql程式。每當乙個特定的資料操作語句 insert,update,delete 在指定表上發出時,oracle自定地執行觸發器中定義的語句序列。簡單的來說就當某個條件成立的時候,觸發器裡面所定義的語句就會被自動的執行,因此觸發器不需要人為的去呼叫,也不能...

oracle13 觸發器 變數

觸發器 觸發器是指隱含的執行的儲存過程。當定義觸發器時,必須要指定觸發的事件和觸發的操作,常用的觸發事件包括insert,update,delete語句,而觸發操作實際就是乙個pl sql塊。可以使用create trigger來建立觸發器。特別說明 我們會在後面詳細為大家介紹觸發器的使用,因為觸發...