需求:在修改表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...