佳木斯湛栽影视文化发展公司

主頁 > 知識庫 > oracle監(jiān)控某表變動觸發(fā)器例子(監(jiān)控增,刪,改)

oracle監(jiān)控某表變動觸發(fā)器例子(監(jiān)控增,刪,改)

熱門標簽:網(wǎng)站排名優(yōu)化 百度競價排名 呼叫中心市場需求 地方門戶網(wǎng)站 AI電銷 服務(wù)外包 鐵路電話系統(tǒng) Linux服務(wù)器

使用oracle觸發(fā)器 實現(xiàn)對某個表的增改刪的監(jiān)控操作,并記錄到另一個表中。

代碼:

復(fù)制代碼 代碼如下:

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ù)據(jù). 
    修改時往歷史表中存放的是修改后的數(shù)據(jù). 
    刪除時往歷史表中存放的是刪除之前的數(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中通過觸發(fā)器記錄每個語句影響總行數(shù)
  • Oracle觸發(fā)器trigger詳解
  • Oracle觸發(fā)器用法實例詳解
  • Oracle創(chuàng)建主鍵自增表(sql語句實現(xiàn))及觸發(fā)器應(yīng)用
  • Oracle中游標Cursor基本用法詳解
  • Oracle存儲過程游標用法分析
  • Oracle顯示游標的使用及游標for循環(huán)
  • 快速學(xué)習(xí)Oracle觸發(fā)器和游標

標簽:湖南 湘潭 衡水 崇左 蘭州 仙桃 黃山 銅川

巨人網(wǎng)絡(luò)通訊聲明:本文標題《oracle監(jiān)控某表變動觸發(fā)器例子(監(jiān)控增,刪,改)》,本文關(guān)鍵詞  ;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 收縮
    • 微信客服
    • 微信二維碼
    • 電話咨詢

    • 400-1100-266
    黑河市| 寻甸| 西平县| 深水埗区| 石屏县| 海晏县| 云阳县| 阜宁县| 贡嘎县| 昌都县| 房山区| 铅山县| 贞丰县| 安徽省| 汕头市| 辽中县| 绵阳市| 尼勒克县| 太原市| 武夷山市| 湖北省| 泸州市| 鄯善县| 宜君县| 昂仁县| 连州市| 松滋市| 阳西县| 都安| 宁明县| 冷水江市| 柞水县| 攀枝花市| 华坪县| 金湖县| 孟连| 榆树市| 万源市| 城口县| 佛山市| 渝中区|