基礎書籍中記錄下來的。
--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 開始支援觸發器。觸發是與表相關的資料庫操作,在滿足定義條件時觸發,並執行觸發器中定義的語句。可以協助應用程式在資料庫端確保資料的完整性,減少不必要的邏輯處理。觸發器只能建立在永久表上,不能建立在臨時表上。對於同乙個表,相同觸發時間,相同觸發事件,只能定義乙個...