1. 程式人生 > 實用技巧 >oracle系列4:觸發器

oracle系列4:觸發器

一、簡介:

觸發器是與表直接關聯的特殊儲存過程,與表的關係密切,用於保護表中的資料。當有操作影響到觸發器保護的資料時,觸發器將自動執行。

二、觸發器的三種類型:

1、DML觸發器:當資料庫中發生DML事件時(insert,select,update,delete),將呼叫觸發器。

2、替代觸發器:也稱檢視觸發器,當檢視發生DML事件時,將呼叫觸發器。

3、系統觸發器:當資料庫發生DDL事件(啟動或關閉資料庫,create,alter,drop)時,將呼叫觸發器。

三、使用觸發器:

1、DML觸發器

// 1、建立一個表
create table tableName(
    id number
); // 2、建立insert的DML觸發器 create or replace trigger trigName after insert on tableName for each row declare str char(100):='test'; begin dbms_output.put_line(str); end; // 3、此時向tableName表中插入一條資料,控制檯會列印test insert into tableName values(1001);

2、替代(檢視)觸發器

// 1、建立一個檢視
create view viewName
as
select
* from tableName // 2、建立insert的檢視觸發器 create trigger trigName instead of insert on tableName for each row declare str char(100):='test'; begin dbms_output.put_line(str); end; // 3、此時向viewName檢視中插入一條資料,控制檯會列印test insert into viewName values(1001);

3、系統觸發器

// 1、建立一個表
create table tableName(
    id 
number ); // 2、建立系統觸發器,當用戶刪除資料庫物件(表、檢視)前,控制檯列印test create or replace trigger trigName before drop on system.schema declare str char(100):='test'; begin dbms_output.put_line(str); end; // 3、此時刪除tableName表,控制檯會列印test drop table tableName;

四、啟用和禁用觸發器:

// 1、啟用trigName觸發器
alter trigger trigName enable;

// 2、禁用trigName觸發器
alter trigger trigName disable;

// 3、啟用tableName表中所有的觸發器
alter table<tableName> enable all triggers;

// 4、禁用tableName表中所有的觸發器
alter table<tableName> disable all triggers;

// 5、刪除trigName觸發器
drop trigger trigName;