oracle pl sql 高階程式設計第二章 觸發器

2021-04-13 12:27:22 字數 2405 閱讀 5250

第二章 觸發器

2.1 觸發器的建立

create trigger [schema.]trigger_name

on [schema.]table_name

[ [referencing correlation_names] for each row [when (condition)] ]

declare

declaration

begin

pl/sql code

end;

/2.2 觸發器的管理

1) 檢視觸發器:

sql> desc all_triggers;

名稱 空? 型別

-------------------- -------- ----------

pl/sql 高階程式設計

第 8 頁 共 8 頁

owner varchar2(30)

trigger_name varchar2(30)

trigger_type varchar2(16)

triggering_event varchar2(216)

table_owner varchar2(30)

base_object_type varchar2(16)

table_name varchar2(30)

column_name varchar2(4000)

referencing_names varchar2(128)

when_clause varchar2(4000)

status varchar2(8)

description varchar2(4000)

action_type varchar2(11)

trigger_body long

2) 檢視觸發器的**:

觸發器的源**被存貯在 all_triggers 的 trigger_body 欄位中。抽取觸發器定義的命令:

set echo off

set maxdata 20000

set long 20000

set longchunksize 1000

set pagesize 0

set heading off

set trimspool on

set trimout on

set recsep off

accept trigger_name char prompt 'please input the trigger to lookup:'

accept trigger_owner char prompt 'please input the trigger owner:'

accept file_name char prompt 'please enter the output file path:'

set termout off

set feedback off

-- 設定when_clause欄位格式並使之折行

spool &file_name

select 'create or replace trigger ' || description from all_triggers

where trigger_name = upper('&trigger_name')

and owner = upper('&trigger_owner');

select 'when (' || when_clause || ')' when_caluse from all_triggers

where trigger_name = upper('&trigger_name')

and owner = upper('&trigger_owner')

and when_clause is not null;

select trigger_body from all_triggers

where trigger_name = upper('&trigger_name')

and owner = upper('&trigger_owner');

select '/' from dual;

spool off

set termout on

set feedback on

pl/sql 高階程式設計

第 9 頁 共 9 頁

set verify on

set heading on

set pagesize 24

3) 開啟和關閉觸發器:

-- 開啟觸發器

alter trigger trigger_name disable;

-- 關閉觸發器

alter trigger trigger_name enable;

2.3 觸發器的新功能

建立作用於特定資料庫與資料定義事件的觸發器。事件包括:

oracle PL SQL高階特性

觸發器 存放在資料庫中,並被隱含執行的儲存過程。由觸發事件,觸發條件,觸發操作組成。dml觸發器 指定觸發器時機 before or after 觸發事件 insert delete,update 表名,觸發型別,觸發條件,觸發操作 語句觸發器 create or replace trigger t...

Oracle PL SQL高階特性

定義 pl sql該語言只針對oracle,是sql過程語言的擴充套件,它將sql資料庫語言與乙個過程程式語言結合在一起,此程式語言基於稱為塊的單元,乙個塊包含sql和pl sql語句.觸發器 是指存放在資料庫中,並被隱含執行的過程,體現了資料完整約束.oracle不僅支援dml 操作語言 觸發器,...

《Oracle PL SQL程式設計指南》06 游標

內容導航 游標,是一種資料型別,不是物件,在declare 中宣告,一般放在宣告的最後一條語句。必須先定義游標變數方可使用。游標是從資料表中提取出來的資料,以臨時表的形式存放在記憶體 上下文,工作區 中,在游標中有乙個資料指標。在初始狀態下指向的是首部,利用fetch語句可以移動該指標,從而對游標中...