oracle監控某表變動觸發器例子(監控增,刪,改)_oracle

來源:互聯網
上載者:User

使用oracle觸發器 實現對某個表的增改刪的監控操作,並記錄到另一個表中。

代碼:

複製代碼 代碼如下:

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 
  /* 
    插入時往曆史表中存放的是新插入的資料. 
    修改時往曆史表中存放的是修改後的資料. 
    刪除時往曆史表中存放的是刪除之前的資料. 
  */ 
  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;

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.