資料庫之 觸發器 基礎

2021-07-07 07:22:07 字數 2567 閱讀 2689

觸發器概述:

特殊程式

與函式和儲存過程類似,都屬於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語句

常見的ddl事件:alter create drop grant revoke trunc

建立格式:

刪除觸發器:drop trigger 觸發器名

例子:

create or replace trigger ddltrigger

before create on schema

begin 

dbms_output.put_line('create some object on current schema');

end;

dml觸發器

在執行insert delete update時被觸發

主要用來檢測和儲存替換值得操作

行級觸發器與語句級觸發器

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;

instead-of觸發器

替代觸發器(一般處理檢視操作)

攔截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語句進行複雜的邏輯處理,基於乙個表建立,但是可以對多個表進行操作,因此常常用...