oracle 建立觸發器

2021-09-01 01:27:35 字數 2743 閱讀 2597

一.什麼是觸發器

觸發器是特定事件出現的時候,自動執行的**塊。類似於儲存過程,但是使用者不能直接呼叫他們。

1.觸發器的功能:

二.建立觸發器

1.基本語法結構

create [or replace] trigger [模式.]觸發器名 

before| after insert|delete|(update of 列名)

on 表名

[for each row]

when 條件

pl/sql塊

舉例

create trigger student_triger

before insert or delete or update of student_id

on tan.student

for each row

begin

if inserting then

dbms_output.put_line('insert trigger is chufa le .....');

end if;

if updating then

dbms_output.put_line('update trigger is chufa le .....');

end if;

if deleting then

dbms_output.put_line('delete trigger is chufa le .....');

end if;

end;

create trigger student_triger
before insert  or  delete or update of student_id

on tan.student

for each row
if inserting then

dbms_output.put_line('insert trigger is chufa le .....');

end if;

if updating then

dbms_output.put_line('update trigger is chufa le .....');

end if;

if deleting then

dbms_output.put_line('delete trigger is chufa le .....');

end if;

三.觸發器的分類

1.dml觸發器

dml觸發器是對錶進行insert,update,delete操作時激發的,上面的例子就是典型的dml觸發器

2.instead of觸發器

在簡單檢視上往往可以執行insert、update和delete操作,但是在複雜檢視上執行insert、 update和delete操作是有限的。如果檢視子查詢包含有集合操作符、分組函式、distinct關鍵字或者連線查詢,那麼將禁止在該檢視上執行 dml操作。為了在這些複雜檢視上執行操作,需要建立instead-of觸發器。

instead of 觸發器的限制:

create or replace trigger tr_instead_of_stu_view

instead of insert on stu_view

for each row

begin

// sql 複雜的邏輯操作

end;

3.系統事件觸發器

oracle的系統事件觸發器:系統事件觸發器是指基於oracle系統事件(如logon和startup)所建立的觸發器。通過這種觸發器可以跟蹤系統或資料庫的變化。

首先建立log表

createtable triger_log_table(

username varchar2(20),

log_time date,

onoff varchar(6),

address varchar2(30));

其次建立觸發器

createtrigger tr_logon

after logon ondatabase

begin

insertinto triger_log_table values (ora_login_user,sysdate,'logon',ora_client_i p_address);

end;

//當使用者登入資料庫後時,將有關資訊寫入建立的log表中

createtrigger tr_logoff

before logoff ondatabase

begin

insertinto triger_log_table values(ora_login_user,sysdate,'logoff',ora_client_ ip_address);

end;

//當使用者退出資料庫時,將有關資訊寫入建立的log表中

Oracle建立觸發器

首先要講一下觸發器的概念 觸發器是由於dml語句的執行引發的一種特殊的資料庫物件。所以呢他的型別就要insert,instead of update,delete 三種觸發器。基本用法如下面所示 建立刪除觸發器 create or replace trigger tri delete after d...

oracle建立觸發器

工作需要,需要建立乙個觸發器,判斷表中的id是否為空,如果為空的時候需要用觸發器加上id,如果沒有觸發觸發器加上id,如果有則不觸發觸發器。建立乙個序列,每次加乙個 create sequence 序列名稱 increment by 1 每次加乙個 建立乙個觸發器 create or replace...

建立oracle觸發器

create trigger 觸發器名稱 before after 執行前觸發還是執行後觸發 insert update delete on 表名 for each row begin 觸發的sql語句 如果只有一條sql語句,可省略begin,end end 觸發器中可能會用到兩種值,一種是修改之...