觸發器概述:
特殊程式ddl觸發器與函式和儲存過程類似,都屬於pl/sql塊
不可以直接呼叫,只能是某種事件觸發
分類:ddl觸發器、dml觸發器、instead-of觸發器(替代某個動作的觸發器)、系統觸發器(對系統訪問進行控制)
觸發器body部分不可以超過32760位元組
一般情況下,非系統觸發器是不能直接呼叫ddl、dcl、tcl
盡量避免使用long 和long raw 格式(用clob blob)
例子:
create trigger trig1
before delete on emp
declare
x number :=10;
begin
dbms_output.put_line('delete on emp');
end trig1;
建立、修改和刪除資料庫物件時被觸發主要用來控制、監控ddl語句
常見的ddl事件:alter create drop grant revoke trunc
建立格式:dml觸發器刪除觸發器:drop trigger 觸發器名
例子:
create or replace trigger ddltrigger
before create on schema
begin
dbms_output.put_line('create some object on current schema');
end;
在執行insert delete update時被觸發instead-of觸發器主要用來檢測和儲存替換值得操作
行級觸發器與語句級觸發器
create [or replace] trigger trigger_name
on table_name
[for each row] --加就是行級觸發器
[when(condition)]
[declare
declaration]
begin
statement
end;
例子:
create or replace trigger dmltrig1
before delete on emp
for each row
begin
dbms_output.put_line('1');
end;
替代觸發器(一般處理檢視操作)系統觸發器攔截insert update delete 操作並使用代替之
通常用來管理對不可更新檢視的操作
例子:create or replace trigger insteadtring
instead of delete on empview
begin
dbms_output.put_line('delete on enpview')
end;
系統活動發生時會觸發通常用來跟蹤系統事件,審計系統訪問
create [or replace] trigger trigger_name
db_event on
[when(condition)]
[declare
declaration]
begin
statement
end;
例子:
create or replace trigger systemtrig
after logon on database
begin
insert into logs values ('user logged in');
end;
資料庫基礎之觸發器
1.定義 觸發器 trigger 是與表事件相關的特殊的儲存過程,它的執行是由事件來觸發。觸發器經常用於加強資料的完整性約束和業務規則等。2.觸發器和儲存過程的區別 觸發器與儲存過程的唯一區別是觸發器不能執行execute語句呼叫,而是在使用者執行transact sql語句時自動觸發執行。3.作用...
資料庫基礎 觸發器
觸發器是在對錶進行插入 更新或刪除操作時自動執行的儲存過程 觸發器通常用於強制業務規則 觸發器是一種高階約束,可以定義比 check 約束更為複雜的約束 可執行複雜的 sql 語句 if while case 可引用其它表中的列 觸發器定義在特定的表上,與表相關 自動觸發執行 不能直接呼叫 是乙個事...
資料庫之觸發器
觸發器 看到這個名字總是會想到數電中學過的觸發器,有輸入端和輸出端,根據電平的高低來觸發。資料庫中的觸發器是個特殊的儲存過程,主要是通過事件進行觸發而被執行的,而儲存過程可以通過儲存過程名稱而被直接呼叫。作用 使用t sql語句進行複雜的邏輯處理,基於乙個表建立,但是可以對多個表進行操作,因此常常用...