IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> oracle使用触发器监听表数据并记录日志 -> 正文阅读

[大数据]oracle使用触发器监听表数据并记录日志

根据所要监控的表创建日志表

比如某业务表 UUC_BIZ_USER_BIND
在这里插入图片描述
新建日志表:

CREATE TABLE "UUC_BIZ_USER_BIND_LOG" 
   ("ID" NUMBER(8,0), 
	"MOBILE" VARCHAR2(255), 
	"ID_CARD" VARCHAR2(255), 
	"NAME" VARCHAR2(255), 
	"USER_ID" VARCHAR2(255), 
	"COM_CODE" VARCHAR2(255), 
	"COM_NAME" VARCHAR2(255), 
	"TEAM_CODE" VARCHAR2(255), 
	"TEAM_NAME" VARCHAR2(255), 
	"IS_SELL" CHAR(1), 
	"CHANNEL_SOURCE" CHAR(1), 
	"UPDATE_DATE" TIMESTAMP (6), 
	"SAPCOM_CODE" VARCHAR2(255), 
	"ISPCBUS" VARCHAR2(255), 
	"ROOT_DATE" VARCHAR2(255), 
	"PRACTFNO" VARCHAR2(255), 
	"ORG_CODE" VARCHAR2(255), 
	"CREATE_DATE" TIMESTAMP (6), 
	"TYPE" VARCHAR2(255), 
	 PRIMARY KEY ("ID"))

其中,区别于原表,新增了两个字段:
create_date 日志创建时间
type 类型:1、新增 2、修改 3、删除

创建序列,用于日志表ID自增

create sequence SEQ_USER_BIND_LOG 
minvalue 1
maxvalue 999999999999999999999999999
start with 1
increment by 1
cache 20;

创建触发器,用于监控表数据变更并记录日志表

CREATE OR REPLACE TRIGGER TRIGGER_USER_BIND_UPDATE 

BEFORE INSERT OR UPDATE OR DELETE ON UUC_BIZ_USER_BIND

FOR EACH ROW

DECLARE 

V_ID	NUMBER(8);
V_MOBILE	VARCHAR2(255);
V_ID_CARD	VARCHAR2(255);
V_NAME	VARCHAR2(255);
V_USER_ID	VARCHAR2(255);
V_COM_CODE	VARCHAR2(255);
V_COM_NAME	VARCHAR2(255);
V_TEAM_CODE	VARCHAR2(255);
V_TEAM_NAME	VARCHAR2(255);
V_IS_SELL	CHAR(1);
V_CHANNEL_SOURCE	CHAR(1);
V_UPDATE_DATE	TIMESTAMP(0);
V_SAPCOM_CODE	VARCHAR2(255);
V_ISPCBUS	VARCHAR2(255);
V_ROOT_DATE	VARCHAR2(255);
V_PRACTFNO	VARCHAR2(255);
V_ORG_CODE	VARCHAR2(255);
V_CREATE_DATE	TIMESTAMP(0);
V_TYPE	VARCHAR2(255);

BEGIN

/*

修改时往历史表中存放的是修改前的数据.

删除时往历史表中存放的是删除前的数据.

*/

SELECT SEQ_USER_BIND_LOG.NEXTVAL INTO V_ID FROM DUAL; -- 利用seq生成主键

V_MOBILE		:=		:OLD.MOBILE;
V_ID_CARD		:=		:OLD.ID_CARD;
V_NAME		:=		:OLD.NAME;
V_USER_ID		:=		:OLD.USER_ID;
V_COM_CODE		:=		:OLD.COM_CODE;
V_COM_NAME		:=		:OLD.COM_NAME;
V_TEAM_CODE		:=		:OLD.TEAM_CODE;
V_TEAM_NAME		:=		:OLD.TEAM_NAME;
V_IS_SELL		:=		:OLD.IS_SELL;
V_CHANNEL_SOURCE		:=		:OLD.CHANNEL_SOURCE;
V_UPDATE_DATE		:=		:OLD.UPDATE_DATE;
V_SAPCOM_CODE		:=		:OLD.SAPCOM_CODE;
V_ISPCBUS		:=		:OLD.ISPCBUS;
V_ROOT_DATE		:=		:OLD.ROOT_DATE;
V_PRACTFNO		:=		:OLD.PRACTFNO;
V_ORG_CODE		:=		:OLD.ORG_CODE;

IF INSERTING THEN

V_TYPE		:=		'1';

V_MOBILE		:=		:NEW.MOBILE;
V_ID_CARD		:=		:NEW.ID_CARD;
V_NAME		:=		:NEW.NAME;
V_USER_ID		:=		:NEW.USER_ID;
V_COM_CODE		:=		:NEW.COM_CODE;
V_COM_NAME		:=		:NEW.COM_NAME;
V_TEAM_CODE		:=		:NEW.TEAM_CODE;
V_TEAM_NAME		:=		:NEW.TEAM_NAME;
V_IS_SELL		:=		:NEW.IS_SELL;
V_CHANNEL_SOURCE		:=		:NEW.CHANNEL_SOURCE;
V_UPDATE_DATE		:=		:NEW.UPDATE_DATE;
V_SAPCOM_CODE		:=		:NEW.SAPCOM_CODE;
V_ISPCBUS		:=		:NEW.ISPCBUS;
V_ROOT_DATE		:=		:NEW.ROOT_DATE;
V_PRACTFNO		:=		:NEW.PRACTFNO;
V_ORG_CODE		:=		:NEW.ORG_CODE;

ELSIF UPDATING THEN

V_TYPE		:=		'2';

ELSE

V_TYPE		:=		'3';

END IF;

INSERT INTO UUC_BIZ_USER_BIND_LOG(ID,MOBILE,ID_CARD,NAME,USER_ID,COM_CODE,COM_NAME,TEAM_CODE,TEAM_NAME,IS_SELL,CHANNEL_SOURCE,UPDATE_DATE,SAPCOM_CODE,ISPCBUS,ROOT_DATE,PRACTFNO,ORG_CODE,CREATE_DATE,TYPE)

VALUES(V_ID,V_MOBILE,V_ID_CARD,V_NAME,V_USER_ID,V_COM_CODE,V_COM_NAME,V_TEAM_CODE,V_TEAM_NAME,V_IS_SELL,V_CHANNEL_SOURCE,V_UPDATE_DATE,V_SAPCOM_CODE,V_ISPCBUS,V_ROOT_DATE,V_PRACTFNO,V_ORG_CODE, SYSDATE,V_TYPE);

END;

结果验证

可以业务逻辑跑,可以直接执行SQL修改表数据:
在这里插入图片描述
验证通过,收工!

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-10-31 12:04:09  更:2022-10-31 12:07:16 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 10:26:17-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码