oracle觸發器基礎

2021-09-01 16:26:00 字數 2289 閱讀 8212

基礎書籍中記錄下來的。

--1、語句觸發器

create or replace trigger tr_insert_test1

before insert

on test1

begin

if user!='admin' then

end if;

end;

--多個啟用動作

create or replace trigger tr_insert_test2

before insert or update or delete

on test1

begin

if user!='kely' then--區分大小寫,統一大寫

end if;

end;

--觸發器謂詞:inserting、updating、deleting(型別布林值)

--記錄資料庫表操作日誌,使用觸發器

create table t_log(

u_name varchar2(20),

action varchar2(50),

log_time date default sysdate

);create or replace trigger tr_table_log

after insert or update or delete

on test1

begin

if inserting then

insert into t_log(u_name,action) values(user,'insert');

end if;

if updating then

insert into t_log(u_name,action) values(user,'update');

end if;

if deleting then

insert into t_log(u_name,action) values(user,'delete');

end if;

end;

--禁用表的許可權校驗觸發器

alter trigger tr_table_log enable;--disable/enable

--總結:作用級別為表(不支援檢視before/after insert和表before/after select),

-- 無論觸發動作影響到多少記錄都執行一次觸發器

--2、行觸發器

insert update delete

:old 不可用 可用 可用

:new 可用 可用 不可用

--例項

create or replace trigger tr_test1_history

before update or delete

on test1

for each row --行觸發器的標誌

begin

insert into test1_history values(:old.tid,:old.tname,:old.tage,:old.remark);

end;

--變數引用於referencing

create or replace trigger tri_test1_insert

before insert

on test1

referencing new as new_value

for each row

begin

declare max_id number;

begin

select max(tid) into max_id from test1;

:new_value.tid := max_id+1;

end;

end;

--觸發器的條件限制

--3、instead of觸發器(檢視)

--4、系統事件與使用者事件觸發器

--系統事件觸發器

--after startup/before shutdown(系統事件) on database

--使用者事件觸發器

-- on system.schema:指定觸發器的作用物件為使用者system的所有物件(表名)

--5、觸發器相關操作

--禁用/啟用觸發器:disable(alter trigger tr_name disable/enable)

--資料字典中檢視觸發器:user_objects/user_triggers

Oracle基礎 觸發器篇

介紹了oracle中觸發器的簡單使用,實際中觸發器的引入回導致資料難以控制,所以還是少用為好。觸發器是在資料增 刪 改時進行執行,通過對前後資料校驗,完成資料錄入。按照作用範圍可以分為行級觸發器和表級觸發器 old和 new代表一行記錄在操作前後的值 禁止在非工作時間插入新員工 create orr...

ORACLE觸發器 行級觸發器

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

基礎 觸發器

github mysql 從 5.0.2 開始支援觸發器。觸發是與表相關的資料庫操作,在滿足定義條件時觸發,並執行觸發器中定義的語句。可以協助應用程式在資料庫端確保資料的完整性,減少不必要的邏輯處理。觸發器只能建立在永久表上,不能建立在臨時表上。對於同乙個表,相同觸發時間,相同觸發事件,只能定義乙個...