oracle系列4 觸發器

2022-07-21 13:30:24 字數 2189 閱讀 5099

一、簡介:

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

二、觸發器的三種型別:

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

orreplace

trigger

trigname

after

insert

ontablename for each row

declare

strchar(100):=

'test';

begin

dbms_output.put_line(

str);

end;//3

、此時向tablename表中插入一條資料,控制台會列印test

insert

into tablename values(1001);

2、替代(檢視)觸發器

//

1、建立乙個檢視

create

view

viewname

asselect

*from

tablename//2

、建立insert的檢視觸發器

create

trigger

trigname

instead

ofinsert

on tablename for

each row

declare

strchar(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

orreplace

trigger

trigname

before

drop

on system.schema

declare

strchar(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

enable all

triggers;//4

、禁用tablename表中所有的觸發器

alter

table

disable all

triggers;//5

、刪除trigname觸發器

drop

trigger trigname;

ORACLE觸發器 行級觸發器

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

Oracle資料庫 4 觸發器

資料庫觸發器時儲存於資料庫的命令 pl sql 語句塊,當觸發器發生時它們會隱含執行。執行觸發器的活動被稱為觸發觸發器。觸發事件的中類 處理資料庫表的 dml 語句 insert update,delete ddl 語句 如 create alter 系統事件 如資料庫啟動或關閉。使用者事件,如登入...

Oracle觸發器介紹 行級觸發器

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