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.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值