oracle觸發器 簡要

2021-09-06 06:59:52 字數 1538 閱讀 5141

語法講解------觸發器的構建語法:

create [or replace] trigger trigger_name

before|after

event1 [ or event2 or event3 …]

on table_name [

foreach row]

begin

statement;

…end;

event通常是insert、delete或update等dml操作。

for example:

1.先建立一張表,用來記錄emp2上的操作:

create table emp2_log(

uname varchar2(20),

action varchar2(10),

atime date

);

2.然後建立觸發器:

create or replace trigger trig

after insert or delete or update on emp2

begin

ifinserting then

insert into emp2_log values(user,'insert',sysdate);

elsif updating then

insert into emp2_log values(user,'update',sysdate);

elsif deleting then

insert into emp2_log values(user,'delete',sysdate);

end if;

end;

概述:

1.觸發器分為

語句級觸發器和

行級觸發器

2.語句級觸發器是指每執行一條dml語句,該觸發器就執行一次

3.行級觸發器是指每個dml操作影響幾條記錄,就會觸發幾次

4.行級觸發器中由於涉及到了每條記錄的資料變動,所以對於每條記錄的資料來說就有新值和舊值之分:

用關鍵字

:new:old來代表新的記錄和舊的記錄(可用於製作自增長id)。

for example:

解決完整性外來鍵約束的例子:

1.由於資料完整性所以執行:

update dept set deptno = 99 where deptno = 10;

時因為emp表中的外來鍵關係所以報外來鍵的錯誤。

2.可以使用觸發器順利執行:

create or replace trigger trig

after update on dept

foreach row

begin

update emp set deptno =:new.depno where deptno =:old.deptno;

end;

因為觸發器執行完畢後,資料庫才會檢查完整性的約束條件。

ORACLE觸發器 行級觸發器

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

Oracle觸發器介紹 行級觸發器

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

Oracle觸發器簡介 建立 使用觸發器

觸發器類似與儲存過程,都是為了實現特殊功能而執行的 塊。觸發器不允許使用者顯示傳遞引數,不能夠返回引數值,不允許使用者呼叫觸發器。觸發器只是在oracle合適的時間自動呼叫,非常類似於面向程式設計中的 觸發器按照觸發事件型別 物件不同分為 語句觸發器,行觸發器,instead of觸發器,系統事件觸...