Oracle資料庫觸發器例項

2021-09-26 02:48:51 字數 3473 閱讀 8087

需求:在修改表qdyth.jzfpjcxx時,要實時記錄表中的資料變動情況

協商後結果:建立新錶記錄資料變動情況

實現手段:資料庫觸發器

-- 建立或修改觸發器 tr_jzfpjcxx_2

create or replace trigger tr_jzfpjcxx_2

-- 觸發條件

before delete or insert or update

-- 觸發器對應表

on qdyth.jzfpjcxx

-- 按行操作

for each row

declare

v_type varchar2(10); -- 更新型別

begin

--insert觸發

if inserting then

v_type := 'insert';

insert into qdyth.jzfpjcxx_his

values

(:new.c_1,

:new.c_2,

:new.c_3,

:new.c_4,

:new.c_5,

:new.c_6,

:new.c_7,

:new.c_8,

:new.c_9,

:new.c_10,

:new.c_11,

:new.c_12,

:new.c_13,

:new.c_14,

:new.c_15,

:new.c_16,

:new.c_17,

:new.c_18,

:new.c_19,

:new.c_20,

:new.c_21,

:new.c_22,

:new.c_23,

:new.c_24,

:new.aac001,

:new.zgyljfzt,

:new.zgyiljfzt,

:new.jmyljfzt,

:new.jmyiljfzt,

:new.sfm16zs,

:new.tsrq,

:new.sfzh,

:new.xh,

:new.zgyldy,

:new.jmyldy,

:new.jmyiljflb2017,

:new.bhsl,

:new.jmyljf2016,

:new.jmyljf2017,

:new.ctime,

:new.jmyiljflb2018,

:new.jmyljf2018,

:new.aae013,

:new.jzfpjcxxid,

sysdate, -- 更新時間

v_type);

--update觸發

elsif updating then

v_type := 'update';

insert into qdyth.jzfpjcxx_his

values

(:new.c_1,

:new.c_2,

:new.c_3,

:new.c_4,

:new.c_5,

:new.c_6,

:new.c_7,

:new.c_8,

:new.c_9,

:new.c_10,

:new.c_11,

:new.c_12,

:new.c_13,

:new.c_14,

:new.c_15,

:new.c_16,

:new.c_17,

:new.c_18,

:new.c_19,

:new.c_20,

:new.c_21,

:new.c_22,

:new.c_23,

:new.c_24,

:new.aac001,

:new.zgyljfzt,

:new.zgyiljfzt,

:new.jmyljfzt,

:new.jmyiljfzt,

:new.sfm16zs,

:new.tsrq,

:new.sfzh,

:new.xh,

:new.zgyldy,

:new.jmyldy,

:new.jmyiljflb2017,

:new.bhsl,

:new.jmyljf2016,

:new.jmyljf2017,

:new.ctime,

:new.jmyiljflb2018,

:new.jmyljf2018,

:new.aae013,

:new.jzfpjcxxid,

sysdate, -- 更新時間

v_type);

--delete觸發

elsif deleting then

v_type := 'delete';

insert into qdyth.jzfpjcxx_his

values

(:old.c_1,

:old.c_2,

:old.c_3,

:old.c_4,

:old.c_5,

:old.c_6,

:old.c_7,

:old.c_8,

:old.c_9,

:old.c_10,

:old.c_11,

:old.c_12,

:old.c_13,

:old.c_14,

:old.c_15,

:old.c_16,

:old.c_17,

:old.c_18,

:old.c_19,

:old.c_20,

:old.c_21,

:old.c_22,

:old.c_23,

:old.c_24,

:old.aac001,

:old.zgyljfzt,

:old.zgyiljfzt,

:old.jmyljfzt,

:old.jmyiljfzt,

:old.sfm16zs,

:old.tsrq,

:old.sfzh,

:old.xh,

:old.zgyldy,

:old.jmyldy,

:old.jmyiljflb2017,

:old.bhsl,

:old.jmyljf2016,

:old.jmyljf2017,

:old.ctime,

:old.jmyiljflb2018,

:old.jmyljf2018,

:old.aae013,

:old.jzfpjcxxid,

sysdate, -- 更新時間

v_type);

end if;

end;

oracle資料庫觸發器

instead of觸發器介紹 instead of觸發器代替觸發動作,並在處理約束之前激發 對於每個觸發操作,每個表或檢視都只能有乙個instead of觸發器。而乙個表對於每個觸發操作可以有多個after觸發器 instead of觸發器的建立模板 create or replace trigg...

資料庫觸發器例項講解

何為觸發器?在sql server裡面也就是對某乙個表的一定的操作,觸發某種條件,從而執行的一段程式。觸發器是乙個特殊的儲存過程。常見的觸發器有三種 分別應用於insert update delete 事件 用到的功能有 1.如果我更改了學生的學號,我希望他的借書記錄仍然與這個學生相關 也就是同時更...

Oracle資料庫update觸發器

在專案中使用到oracle資料庫的update觸發器,先記錄下來方便以後查閱。預備知識和格式以後再編輯吧,先把內容貼出來。create or replace trigger demo trigger after update on tb goods referencing new as new ol...