oracle監(jiān)控某表變動(dòng)觸發(fā)器例子(監(jiān)控增,刪,改)
使用oracle觸發(fā)器 實(shí)現(xiàn)對(duì)某個(gè)表的增改刪的監(jiān)控操作,并記錄到另一個(gè)表中。
代碼:
create or replace trigger test_trigger
before insert or update or delete on test_table
for each row
declare
v_id varchar2(30);
v_bdlb varchar2(1);
v_jgdm VARCHAR2(12);
v_jgmc VARCHAR2(60);
v_gajgmc VARCHAR2(60);
v_gajgwsmc VARCHAR2(30);
v_jz VARCHAR2(30);
v_ksdwsdwmc VARCHAR2(30);
begin
/*
插入時(shí)往歷史表中存放的是新插入的數(shù)據(jù).
修改時(shí)往歷史表中存放的是修改后的數(shù)據(jù).
刪除時(shí)往歷史表中存放的是刪除之前的數(shù)據(jù).
*/
select org_id_s.nextval into v_id from dual; -- 利用seq生成主鍵
v_jgdm := :new.row_id;
v_jgmc := :new.dept_name;
v_gajgmc := :new.dept_name;
v_gajgwsmc := :new.bmjc;
v_jz := substr(v_jgdm, 7, 2);
if '2' = :new.depttype then
v_ksdwsdwmc := 'shiju';
else
if '03' = v_jz then
v_ksdwsdwmc := 'zhi';
elsif '05' = v_jz then
v_ksdwsdwmc := 'xing';
elsif '51' = v_jz then
v_ksdwsdwmc := 'she';
else
v_ksdwsdwmc := 'qita';
end if;
end if;
if inserting then
v_bdlb := '1';
insert into test_table_h
(id, bdlb, jgdm, jgmc, gajgmc, gajgwsmc, jz, ksdwsdwmc)
values
(v_id,
v_bdlb,
v_jgdm,
v_jgmc,
v_gajgmc,
v_gajgwsmc,
v_jz,
v_ksdwsdwmc);
elsif updating then
v_bdlb := '2';
insert into test_table_h
(id, bdlb, jgdm, jgmc, gajgmc, gajgwsmc, jz, ksdwsdwmc)
values
(v_id,
v_bdlb,
v_jgdm,
v_jgmc,
v_gajgmc,
v_gajgwsmc,
v_jz,
v_ksdwsdwmc);
else
v_bdlb := '3';
v_jgdm := :old.row_id;
v_jgmc := :old.dept_name;
v_gajgmc := :old.dept_name;
v_gajgwsmc := :old.bmjc;
v_jz := substr(v_jgdm, 7, 2);
if '2' = :old.depttype then
v_ksdwsdwmc := 'shiju';
else
if '03' = v_jz then
v_ksdwsdwmc := 'zhi';
elsif '05' = v_jz then
v_ksdwsdwmc := 'xing';
elsif '51' = v_jz then
v_ksdwsdwmc := 'she';
else
v_ksdwsdwmc := 'qita';
end if;
end if;
insert into test_table_h
(id, bdlb, jgdm, jgmc, gajgmc, gajgwsmc, jz, ksdwsdwmc)
values
(v_id,
v_bdlb,
v_jgdm,
v_jgmc,
v_gajgmc,
v_gajgwsmc,
v_jz,
v_ksdwsdwmc);
end if;
end;
- Oracle中觸發(fā)器示例詳解
- 詳解oracle中通過(guò)觸發(fā)器記錄每個(gè)語(yǔ)句影響總行數(shù)
- Oracle觸發(fā)器trigger詳解
- Oracle觸發(fā)器用法實(shí)例詳解
- Oracle創(chuàng)建主鍵自增表(sql語(yǔ)句實(shí)現(xiàn))及觸發(fā)器應(yīng)用
- Oracle中游標(biāo)Cursor基本用法詳解
- Oracle存儲(chǔ)過(guò)程游標(biāo)用法分析
- Oracle顯示游標(biāo)的使用及游標(biāo)for循環(huán)
- 快速學(xué)習(xí)Oracle觸發(fā)器和游標(biāo)
相關(guān)文章
Oracle組件實(shí)現(xiàn)動(dòng)態(tài)Web數(shù)據(jù)庫(kù)
Oracle組件實(shí)現(xiàn)動(dòng)態(tài)Web數(shù)據(jù)庫(kù)...2007-03-03Oracle SQL Developer連接報(bào)錯(cuò)(ORA-12505)的解決方案(兩種)
本篇文章通過(guò)兩種方案幫大家解決Oracle SQL Developer連接報(bào)錯(cuò)(ORA-12505),需要的朋友可以參考下2015-10-10Oracle常見(jiàn)分析函數(shù)實(shí)例詳解
分析函數(shù)是Oracle專門用于解決復(fù)雜報(bào)表統(tǒng)計(jì)需求的功能強(qiáng)大的函數(shù),它可以在數(shù)據(jù)行分組然后計(jì)算基于組的某種統(tǒng)計(jì)值,并且每一組的每一行都可以返回一個(gè)統(tǒng)計(jì),下面這篇文章主要給大家介紹了關(guān)于Oracle常見(jiàn)分析函數(shù)的相關(guān)資料,需要的朋友可以參考下2023-04-04Oracle數(shù)據(jù)塊實(shí)現(xiàn)原理深入解讀
Oracle對(duì)數(shù)據(jù)庫(kù)數(shù)據(jù)文件(datafile)中的存儲(chǔ)空間進(jìn)行管理的單位是數(shù)據(jù)塊(data block),本文將詳細(xì)介紹2012-11-11oracle 12c因誤刪pdb數(shù)據(jù)文件導(dǎo)致整個(gè)數(shù)據(jù)庫(kù)打不開(kāi)的解決方法
這篇文章主要給大家介紹了關(guān)于oracle 12c因誤刪pdb數(shù)據(jù)文件導(dǎo)致整個(gè)數(shù)據(jù)庫(kù)打不開(kāi)問(wèn)題的解決方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起看看吧。2017-10-10