搜索
首页 电脑/网络 软件 系统软件

通用的数据变更日志记录表及触发器如何自动生成脚本?

通用的数据变更日志记录表及触发器如何自动生成脚本?

全部回答

2018-03-29

66 0
    本文主要介绍了通用的数据变更日志记录表及触发器的自动生成脚本,大家可以根据自己实际的需要来自行定义。 declarev_sqlstr varchar2(4000);begin--创建slog日志表及触发器for i in (select tname, tcommentsfrom ad_tabwhere is_slog = 1) loopbeginexecute immediate 'drop table slog_' || i。
    tname || ' purge';exceptionwhen others thennull;end;execute immediate 'create table slog_' || i。
  tname ||' as select 1 log_id,sysdate logdt,'' '' action,lpad('' '',100) user_ip,lpad('' '',100) user_host, a。
    * from ' ||i。tname || ' a';execute immediate 'comment on table slog_' || i。tname || ' is ''' || i。
  tcomments || '_LOG''';--建触发器v_sqlstr := 'create or replace trigger trg_slog_' || substr(i。  tname, 1, 20) || ' after insert or update or delete on ' || i。
  tname || 'for each row/************************************Created by xsb on 2006-02-05数据变更日志记录*************************************/declare v_action char (1);beginif inserting thenv_action := ''i'';elsif updating thenv_action := ''u'';elsev_action := ''d'';end if;--插入或更新记录时if inserting or updating theninsert into slog_' || i。
    tname || '(log_id, logdt, action, user_host, user_ip';for j in (select column_namefrom user_tab_colswhere table_name = i。
  tnameorder by column_id) loop--表的列名v_sqlstr := v_sqlstr || ', ' || j。  column_name;end loop;v_sqlstr := v_sqlstr || ')values(seq_sys_log。
  nextval, sysdate, v_action, sys_context(''userenv'',''host''), sys_context(''userenv'',''ip_address'')';for j in (select column_namefrom user_tab_colswhere table_name = i。
    tnameorder by column_id) loop--表的列名v_sqlstr := v_sqlstr || ', :new。' || j。column_name;end loop;v_sqlstr := v_sqlstr || ');end if;--删除记录时if deleting theninsert into slog_' || i。
    tname || '(log_id, logdt, action, user_host, user_ip';for j in (select column_namefrom user_tab_colswhere table_name = i。
  tnameorder by column_id) loop--表的列名v_sqlstr := v_sqlstr || ', ' || j。  column_name;end loop;v_sqlstr := v_sqlstr || ')values(seq_sys_log。
  nextval, sysdate, v_action, sys_context(''userenv'',''host''), sys_context(''userenv'',''ip_address'')';。
    。

类似问题换一批

热点推荐

热度TOP

相关推荐
加载中...

热点搜索 换一换

电脑/网络
系统软件
硬件
电脑装机
程序设计
互联网
操作系统/系统故障
笔记本电脑
反病毒
百度
软件
软件
系统软件
多媒体软件
办公软件
网络软件
图像处理软件
系统软件
系统软件
举报
举报原因(必选):
取消确定举报