`

Oracle数据库使用触发器记录表数据修改记录

阅读更多
--日志记录表
CREATE TABLE T_LOG
(
  RID      VARCHAR2(32 BYTE),
  NAME      VARCHAR2(1000 BYTE),
  RQ        DATE      DEFAULT sysdate,
  OLDVALUE  VARCHAR2(255 BYTE),
  NEWVALUE  VARCHAR2(255 BYTE)
);

CREATE INDEX IDX_T_LOG_RID ON T_LOG (RID);

--目标表
CREATE TABLE T_TARGET
(
  id char(32 BYTE),
  NAME      VARCHAR2(20 BYTE),
  salary        number,
  birthday date
);

alter table T_TARGET  add constraint  primary key (id);

--触发器

CREATE OR REPLACE TRIGGER TR_TARGET_MODIFYLOG
AFTER UPDATE
ON T_TARGET
REFERENCING NEW AS New OLD AS Old
FOR EACH ROW
DECLARE
BEGIN
  if :new.birthday<>:old.birthday 
    or nvl2(:new.birthday,1,0)+nvl2(:old.birthday,1,0)=1 
  then 
  	 insert into T_LOG (rid,name,newvalue,oldvalue)
  	 		values(:new.id,'生日',
  	 		  to_char(:new.birthday,'yyyy-mm-dd'),
  	 		  to_char(:old.birthday,'yyyy-mm-dd'));
  end if;
  if :new.name<>:old.name 
    or nvl2(:new.name,1,0)+nvl2(:old.name,1,0)=1 
  then 
  	 insert into t_log (rid,name,newvalue,oldvalue)
  	 		values(:new.id,'姓名',:new.name,:old.name);
  end if;
  if :new.salary<>:old.salary 
    or nvl2(:new.salary,1,0)+nvl2(:old.salary,1,0)=1 
  then 
  	 insert into t_log (rid,name,newvalue,oldvalue)
  	 		values(:new.id,'工资',:new.salary,:old.salary);
  end if;
END TR_TARGET_MODIFYLOG;
/

分享到:
评论

相关推荐

    查看登录oracle数据库用户记录.docx

    要查看登录 Oracle 数据库的用户记录,可以创建一个临时日志表,并建立一个数据库表触发器来记录用户的登录行为。 创建临时日志表 首先,需要创建一个临时日志表来存储用户的登录记录。可以使用以下 SQL 语句来...

    利用 Oracle 系统触发器防止误删除表操作

    Oracle作为一款广泛使用的数据库管理系统,提供了丰富的功能来保障数据安全。其中,系统触发器是Oracle提供的一种强大工具,能够帮助管理员监控并干预特定的数据库操作,有效防止误操作导致的数据丢失。 #### 问题...

    Oracle触发器备份表数据

    在深入探讨如何利用Oracle触发器备份表数据之前,我们首先需要理解几个关键概念:Oracle数据库、触发器以及备份策略。Oracle数据库是全球领先的数据库管理系统之一,以其强大的性能、可靠的安全性和丰富的功能受到...

    oracle数据库触发器实例

    ### Oracle数据库触发器实例解析 #### 一、触发器简介 在Oracle数据库中,触发器是一种存储过程,它被设计为当特定事件(如数据插入、更新或删除)发生时自动执行。触发器可以用于执行复杂的业务逻辑或者数据完整...

    oracle 数据库 触发器

    通过了解和熟练掌握Oracle数据库触发器,开发者可以构建更加灵活且具有弹性的数据库应用,实现对数据变更的精细控制和自动化处理。然而,重要的是要平衡触发器的使用与性能、可维护性和设计清晰度之间的关系,以确保...

    oracle中记录用户登录信息的触发器的例子

    本文将通过一个具体的例子来展示如何在Oracle数据库中创建一个触发器,用于自动记录用户的登录信息。 #### 二、需求分析与设计 假设我们正在为一家企业开发一个基于Oracle数据库的安全管理系统。为了提高系统的...

    Oracle中通过触发器来追踪用户的活动

    在Oracle数据库中,跟踪用户活动是一项重要的管理任务,有助于监控系统的使用情况、保障安全和优化性能。Oracle从Oracle8i开始引入了一类特殊触发器,它们不再局限于传统的DML事件,而是扩展到了系统级别,包括...

    Oracle数据库体系结构( 中文详细版)

    以上是对Oracle数据库体系结构的基本介绍,深入学习还包括对Oracle的SQL语法、存储过程、触发器、视图、约束、分区表等特性的理解和应用。通过理解这些核心概念,可以更好地管理和优化Oracle数据库,提升系统的稳定...

    ODI如何通过logminer创新发展从oracle数据库中抽取增量数据.pdf

    本文主要介绍了使用 ODI 通过 LogMiner 技术从 Oracle 数据库中抽取增量数据的方法。ODI 提供了三种知识模块来抽取数据库中的增量数据:Simple、Consistent 和 Oracle 9i/10g/11g Consistent。在 Simple 方式下,ODI...

    关于oracle触发器before和after的应用问题

    例如,After UPDATE触发器可以用于更新关联表中的统计数据,或记录数据更改的历史记录。 #### DML触发器与替代触发器 - **DML触发器**:这类触发器可在数据操纵语言(DML)操作前或后触发,适用于单个行或整个语句...

    oracle安全审计之登录登出、ddl操作记录触发器

    Oracle数据库是全球广泛使用的数据库管理系统,对于安全性有极高的要求。在Oracle中,安全审计是一项重要的功能,它能够帮助企业或组织跟踪并记录数据库的各种活动,包括登录、登出以及DDL(Data Definition ...

    oracle 触发器实时调用java 中http接口

    在Oracle数据库中,触发器是一种特殊类型的存储过程,它会在特定的数据库操作(如INSERT、UPDATE或DELETE)发生时自动执行。在这个场景中,我们关注的是一个特定的触发器,它在插入数据后被调用,并通过存储过程来...

    oracle 数据库 10g 标准版数据表

    通过《Oracle数据库10g标准版数据表.pdf》和《说明.txt》等文件,你可以深入学习如何创建、管理、查询和优化Oracle数据库中的数据表,进一步提升数据库管理能力。教程阅读器下载.url和爱书吧相关链接可能提供相关的...

    oracle Socket监听数据库推送信息

    这通常涉及到数据库触发器、存储过程以及Java编程的结合使用。以下是对这个主题的详细解释: 1. **Oracle触发器**: - 触发器是Oracle数据库中的一个数据库对象,它在特定的数据库操作(如INSERT、UPDATE或DELETE...

    oracle数据库编程pdf文档教案

    Oracle数据库是全球广泛使用的大型关系型数据库管理系统,尤其在企业级应用中占据重要地位。这份"Oracle数据库编程pdf文档教案"提供了从基础到高级的Oracle学习路径,通过5天的学习内容,帮助读者深入理解并掌握...

    ORACLE数据库比对工具

    Oracle数据库是全球广泛使用的大型关系型数据库管理系统,它提供了丰富的功能和高可用性。在多环境或多版本之间进行数据库比对时,可能涉及到表结构、索引、存储过程、触发器、视图、用户权限等多个方面。这款由...

    oracle数据库中的对表中字段的增删改查

    在Oracle数据库中,对表中字段的增删改查是数据库管理的基础操作,涉及到数据库设计、数据完整性以及日常的数据维护工作。以下将详细介绍这四个基本操作,并结合标签“源码”和“工具”来探讨如何在实践中高效地完成...

    oracle数据库批量数据无损迁移技术研究.pdf

    在该技术中,触发器捕捉 oracle 数据库批量数据的变化,记录数据变化信息,并将其存储在数据库表中。然后,通过设计数据库表,实现数据同步,确保数据的一致性和完整性。同时,元数据模型用于构建 oracle 数据库批量...

Global site tag (gtag.js) - Google Analytics