oracle trigger 表名 列名

select 'create or replace trigger ' || t.TABLE_NAME || '_' || t.COLUMN_NAME ||
'_Update_Insert' || ' after insert or update of' || ' ' ||
t.COLUMN_NAME || ' on ' || t.TABLE_NAME || ' for each row declare
-- local variables here
begin
if updating then
' || 'insert into historydata (id,RECORDID,TABLENAME,COLNAME,' ||
decode(t.DATA_TYPE,
'VARCHAR2',
'NEWVALUECHAR',
'NUMBER',
'NEWVALUENUMBER',
'TIMESTAMP(6)',
'NEWVALUEDATE',
'FLOAT',
'NEWVALUEFLT') || ' , ' ||
decode(t.DATA_TYPE,
'VARCHAR2',
'OLDVALUECHAR',
'NUMBER',
'OLDVALUENUMBER',
'TIMESTAMP(6)',
'OLDVALUEDATE',
'FLOAT',
'OLDVALUEFLT') || ' , ' ||
'MODIFIER,MODIFYDATE,OPERATETYPE) values (''2w3e4r5t6y7u8i'',:new.id, ''' ||
t.TABLE_NAME || ''' , ''' || t.COLUMN_NAME || ''' , ' || ':new.' ||
t.COLUMN_NAME || ' , ' || ':old.' || t.COLUMN_NAME || ' , ' ||
':new.editor,sysdate,''updating'');' || '
end if; ' || ' if inserting then
' || 'insert into historydata (id,RECORDID,TABLENAME,COLNAME,' ||
decode(t.DATA_TYPE,
'VARCHAR2',
'NEWVALUECHAR',
'NUMBER',
'NEWVALUENUMBER',
'TIMESTAMP(6)',
'NEWVALUEDATE',
'FLOAT',
'NEWVALUEFLT') || ' , ' ||
decode(t.DATA_TYPE,
'VARCHAR2',
'OLDVALUECHAR',
'NUMBER',
'OLDVALUENUMBER',
'TIMESTAMP(6)',
'OLDVALUEDATE',
'FLOAT',
'OLDVALUEFLT') || ' , ' ||
'MODIFIER,MODIFYDATE,OPERATETYPE) values (''2w3e4r5t6y7u8i'',:new.id, ''' ||
t.TABLE_NAME || ''' , ''' || t.COLUMN_NAME || ''' , ' || ':new.' ||
t.COLUMN_NAME || ' , ' || ':old.' || t.COLUMN_NAME || ' , ' ||
':new.editor,sysdate,''inserting'');' || '
end if; ' || 'end ' || t.TABLE_NAME || '_' || t.COLUMN_NAME ||
'_Update_Insert ;'
from user_tab_columns t
where t.TABLE_NAME in ('AIRPORT')
and t.COLUMN_NAME != 'ID'


prompt PL/SQL Developer import file
prompt Created on 2009年6月4日 by fox
set feedback off
set define off
prompt Creating HISTORYDATA...
create table HISTORYDATA
(
ID VARCHAR2(40),
RECORDID VARCHAR2(40),
TABLENAME VARCHAR2(100),
COLNAME VARCHAR2(100),
NEWVALUECHAR VARCHAR2(200),
OLDVALUECHAR VARCHAR2(200),
NEWVALUENUMBER NUMBER(10),
OLDVALUENUMBER NUMBER(10),
NEWVALUEDATE TIMESTAMP(6),
OLDVALUEDATE TIMESTAMP(6),
VALUETYPE NUMBER,
OPERATETYPE NUMBER,
MODIFIER VARCHAR2(100),
MODIFYDATE TIMESTAMP(6),
NEWVALUEFLT FLOAT,
OLDVALUEFLT FLOAT
)
;
comment on column HISTORYDATA.VALUETYPE
is '1-int,2-str,3-date.4-float';
comment on column HISTORYDATA.OPERATETYPE
is '1-update,2-insert,3-delete';

prompt Loading HISTORYDATA...
prompt Table is empty
set feedback on
set define on
prompt Done.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值