oracle 監控表資料變更觸發器(指令碼生成)
select 1,REPLACE( 'CREATE OR REPLACE TRIGGER TR_TB_TEST_LOG
AFTER INSERT OR UPDATE ON TB_TEST
FOR EACH ROW
DECLARE
LOG NUMBER(1)~~~~
BEGIN
if inserting then
insert into tb_log(LOG_ID, OBJECT_NAME,KEY_VALUE, EMP_GCODE, EMP_NAME, ACTION_TYPE,UNDO_SQL,REDO_SQL)
values(SQ_LOG.NEXTVAL,''TB_TEST'',:new.PROVINCE_CODE,
:new.OP_EMP_GCODE,:new.OP_EMP_NAME, ''新增'',
''delete TB_TEST where PROVINCE_CODE = ''''''||:new.PROVINCE_CODE||'''''';'',
''insert into TB_TEST('||wm_concat(a.column_name)||')
values('||
wm_concat(decode(b.data_type,'VARCHAR2','''''''||','CHAR','''''''||',
'NUMBER','''||NVL(TO_CHAR(','DATE','TO_DATE(''''''||TO_CHAR(','')||':new.'
||a.column_name||
decode(b.data_type,'VARCHAR2','||''''''','CHAR','||''''''','NUMBER','),''NULL'')||''',
'DATE',',''YYYY-MM-DD HH24:MI:SS'')||'''''',''''YYYY-MM-DD HH24:MI:SS'''')',''))||');''
); else ','~~~~',';') sql_text
from user_col_comments a , (select * from user_tab_columns order by column_id) b
where a.table_name = b.table_name
and a.column_name = b.column_name
and a.table_name='TB_TEST'
union all
---構造update action指令碼
select 2, replace('
select need_log into log from TB_COLUMNS where object_name=''TB_TEST'' and column_name='''||a.column_name||''' ~~~~
if nvl(:old.'||a.column_name||','||decode(b.data_type,'VARCHAR2',''' ''','CHAR',''' ''',
'NUMBER','-9999','DATE','SYSDATE',''' ''')||') <> nvl(:new.'||a.column_name||','||
decode(b.data_type,'VARCHAR2',''' ''','CHAR',''' ''',
'NUMBER','-9999','DATE','SYSDATE',''' ''')||') and log=1 then
insert into tb_log(LOG_ID, OBJECT_NAME,KEY_VALUE,COLUMN_NAME,
OLD_VALUE, NEW_VALUE, EMP_GCODE, EMP_NAME, ACTION_TYPE,UNDO_SQL, REDO_SQL)
values(SQ_LOG.NEXTVAL, ''TB_TEST'',:old.PROVINCE_CODE,'''||a.column_name||
''',:old.'||a.column_name||
',:new.'||a.column_name||',
:new.OP_EMP_GCODE,:new.OP_EMP_NAME,''修改'',
''update TB_TEST set '|| a.column_name
||' =
'||decode(b.data_type,'VARCHAR2','''''''||',
'CHAR','''''''||',
'NUMBER','''|| nvl(TO_CHAR(',
'DATE','TO_DATE(''''''||TO_CHAR(','''''''||')
||':old.'||a.column_name||
decode(b.data_type,'VARCHAR2','||''''''','CHAR','||''''''','NUMBER','),''null'')||''',
'DATE',',''YYYY-MM-DD HH24:MI:SS'')||'''''',''''YYYY-MM-DD HH24:MI:SS'''')','||''''''')||'
where PROVINCE_CODE=''''''||:new.PROVINCE_CODE' ||'||'''''''',
''update TB_TEST set '|| a.column_name
||' =
'||decode(b.data_type,'VARCHAR2','''''''||','CHAR','''''''||','NUMBER','''||nvl(TO_CHAR(',
'DATE','TO_DATE(''''''||TO_CHAR(','''''''||')
||':new.'||a.column_name||decode(b.data_type,'VARCHAR2','||''''''','CHAR','||''''''','NUMBER','),''null'')||''',
'DATE',',''YYYY-MM-DD HH24:MI:SS'')||'''''',''''YYYY-MM-DD HH24:MI:SS'''')','||''''''')||'
where PROVINCE_CODE=''''''||:old.PROVINCE_CODE' ||'||'''''''') ~~~~
end if;','~~~~',';') AS C1
from user_col_comments a , (select * from user_tab_columns order by column_id) b
where a.table_name = b.table_name
and a.column_name = b.column_name
and a.table_name='TB_TEST'
union all
SELECT 3, REPLACE( ' END IF~~~~
END~~~~ ','~~~~',';') FROM DUAL
order by 1 asc
--------------------替換TB_TEST 為所要監控的表名,執行以上指令碼,將獲得的指令碼執行後將生成監控觸發器
相關推薦
oracle 監控表資料變更觸發器(指令碼生成)
-------------- 構造insert action指令碼---------------- select 1,REPLACE( 'CREATE OR REPLACE TRIGGER TR_TB_TEST_LOG AFTER INSERT OR UPDATE O
SQL Server 變更資料捕獲(CDC)監控表資料
一.本文所涉及的內容(Contents) 二.背景(Contexts) 在SQL Server 2008版本之前,對錶資料庫的變更監控,我們通常使用DML觸發器進行監控,把DML操作中的INSERT/UPDATE/DELETE資料記錄下來,但是觸發器的維護比較困難; 當SQL Server
SQL Server 更改跟蹤(Chang Tracking)監控表資料
一.本文所涉及的內容(Contents) 二.背景(Contexts) 在SQL Server 2008以上版本中,對資料庫中的使用者表所做的 DML 更改(插入、更新和刪除操作)除了:SQL Server 變更資料捕獲(CDC)監控表資料之外,還有一個新增功能,那就是:更改跟蹤(Chang Tr
兩個資料庫表資料實時同步(sql2008 觸發器)
/****** Object: Trigger [dbo].[TR_C0T14] Script Date: 11/01/2011 13:21:04 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO -
[轉抄]oracle單表查詢去重(效率比較高的一種方式)
sel select 單表查詢 效率 查詢 rownum 說明 acl 分組 1 select 2 * 3 from 4 ( 5 select 6 a.*, rownum r_n 7
oracle匯入表資料時遇到外來鍵約束問題導致匯入失敗
1、先關掉所有外來鍵約束: SELECT 'alter table '|| t.table_name || ' disable constraint ' || t.CONSTRAINT_NAME || ';' FROM USER_CONSTRAINTS t WHERE t.CONST
匯入匯出 Oracle 分割槽表資料
分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!  
Oracle 備份表資料
--備份表資料 select * from t_owners; --建立備份表 create table t_owners_copy ( id number, name varchar2(100), addressid number, housenumber varchar2(1
線性表資料結構解讀(五)雜湊表結構-HashMap
前面的部落格中,我給大家分析過陣列和連結串列兩種線性表資料結構。陣列儲存區間連續,查詢方便,但是插入和刪除效率低下;連結串列儲存區間離散,插入刪除方便,但是查詢困難。大家肯定會問,有沒有一種結構,既能做到查詢便捷,又能做到插入刪除方便呢?答案就是我們今天
資料結構——單鏈表實現及操作(c語言)
#include <stdio.h> #include <stdlib.h> #define TRUE 1 #define FALSE 0 #define OK 1 #define ERROR 0 #define INFEASIBLE -1 #d
ORACLE鎖表查詢與解鎖指令碼|ORACLE解鎖指令碼|ORACLE鎖表
oracle鎖表查詢與解鎖指令碼|oracle解鎖指令碼|oracle鎖表。 首先你要有許可權,沒許可權就沒得玩。 然後你就可以執行下面的sql,童叟無欺。 SELECT b.owner table_owner, b.object_name, c.username, c
線性表資料結構解讀(六)鏈式雜湊表結構-LinkedHashMap
上一篇文章我和大家一起解讀了HashMap的原理原始碼,各位童鞋可以點選連結檢視線性表資料結構解讀(五)雜湊表結構-HashMap 這次我們一起來看一下LinkedHashMap,它保
oracle資料鄰行(隔行)處理
--語法--向後 LAG (value_expression [,offset] [,default]) OVER ([query_partition_clause] order_by_clause) --向前 LEAD (value_expression [,offset]
ORACLE 10G的資料泵自動備份指令碼
專案中遇到客戶有這種需求:資料泵每日定時備份一次,保留7個備份。以下指令碼可以實現此要求: [[email protected] oracle]$ cat /opt/oracle/expdp.sh #/bin/sh PATH=$PATH:$HOME/bin ex
oracle刪除表資料的兩種的方式
平時寫sql中我們都會用到刪除語句,而平時刪除表資料的時候我們經常會用到兩種方式: 在oracle中,truncate、delete都可以刪除表資料,具體的區別以及sql語法如下: truncate table [表名]; delete from [表名]; de
oracle檢視更新,替代觸發器(轉)
在oracle中通常如果檢視的資料來源來自單表則該檢視可以進行更新。而如果檢視資料來源來自兩個以上表時這個檢視是不可更新的。但有時候為了操作的方便我們更希望能夠對多表檢視也進行更新。 這時候我們可以通過建立更新觸發器來替代該檢視原有更新以達到多表更新的效果 例如:
oracle建立表增加欄位sql指令碼
oracle comment on的用法 oracle中用comment on命令給表或欄位加以說明,語法如下: COMMENT ON { TABLE [ schema. ] { table | view } | COLUMN [ sc
hive部分:hive表中載入資料的方式(四種)
注意:hive不支援insert into table values()的插入資料 hive表中載入資料的四種方式 1.從本地載入資料 hive (hive)> create table wyp > (id int,name strin
oracle-hr表查詢命令練習(超完整的select命令大全)
切換到 oracle的 hr使用者下面練習 1. 查詢工資大於12000的員工姓名和工資 Select initcap(concat(last_name,first_name)) "姓名",salary from employees where salary>
c語言資料結構實現-雜湊表/雜湊桶(hashtable/hashbucket)
一、需求 以“key-value”的形式進行插入、查詢、刪除,是否可以考慮犧牲空間換時間的做法? 二、相關知識 雜湊表(Hashtable)又稱為“雜湊表”,Hashtable是會根據索引鍵的雜湊程式程式碼組織成的索引鍵(Key)和值(Value)配對的集合。Hashtab