第二章 觸發器
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語句可以移動該指標,從而對游標中...