--日志记录表
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 数据库中如何统计表记录数的过程说明
神通数据库触发器按照所触发动作的间隔尺寸可以分为语句级触发器和行 级触发器。触发器由 CREATE TRIGGER 语句定义,FOR EACH 子句定义了触发动作的间隔尺寸,它既 可以是 FOR EACH STATEMENT(语句级触发器),也...
Oracle是能够安装在目前为止所有的计算机上并进行驱动运行的关系型数据库管理系统。Oracle数据库内部的数据操作...Oracle数据库对象:cluster、数据库联接、触发器、外部程序库、索引、Java类、演算子、表、视图等等
详解oracle中通过触发器记录每个语句影响总行数 需求产生: 业务系统中,有一步“抽数”流程,就是把一些数据从其它服务器同步到本库的目标表。这个过程有可能 多人同时抽数,互相影响。有测试人员反应,原来抽过...
Oracle数据库表序列ID自增生成器的功能是为数据库中的表添加序列和触发器,以便使数据表的主键ID能够随着记录的增加而自动增加。
同步CDC主要是采用触发器记录新增数据,基本能够做到实时增量抽取。而异步CDC则是通过分析已经commit的日志记录来得到增量数据信息,有一定的时间延迟,并且提供了到Oracle Streams的接口。异步CDC只在10g中支持。
Oracle数据库系统是数据库领域最优秀的数据库之一,《Oracle11g从入门到精通》以Oracle最新版本Oracle 11g为蓝本,系统地讲述了Oracle数据库的概念、管理和应用开发等内容。 全书结构合理、内容翔实、示例丰富...
18. 表空间是Oracle数据库中数据的逻辑组织,每个数据库至少有一个SYSTEM系统表空间。 19.视图是一个表示表的数据的数据库对象,它允许用户从一个表或一组表中通过一定的查询语句建立一个“虚表”。 20.序列是一种...
-- 将修改前数据插入到日志记录表 del_emp ,以供监督使用。 INSERT INTO emp_his(deptno , empno, ename , job ,mgr , sal , comm , hiredate ) VALUES( :old.deptno, :old.empno, :old.ename , :old.job, :old....
数据库触发器是一个与表相关联的,存储的PL/SQL 语句。 每当一个特定的数据操作语句(insert update delete)在指定的表上发出时,Oracle自动执行触发器中定义的语句序列。 举个简单的例子: 当员工表中新增一条记录...
但不能使用数据定义语句。 在PL/SQL块中使用SELECT语句时注意几点: (1)SELECT语句必须含有INTO子句。 (2)INTO子句后的变量个数和位置及数据类型必须和SELECT命令后的字段名表相同。 (3)INTO子句后可以是简单...
Oracle数据库系统是数据库领域最优秀的数据库之一,《Oracle11g从入门到精通》以Oracle最新版本Oracle 11g为蓝本,系统地讲述了Oracle数据库的概念、管理和应用开发等内容。 全书结构合理、内容翔实、示例丰富...
2、至少建立5个表,以及表间关系,使用到序列,索引,视图,同义词,约束,每个表至少插入相关信息10条记录; 3、要求使用sqlplus,pl/sql或developer建立存储过程,触发器和程序包等代码,其中要求用到游标,异常,...
建立触发器 CREATE [OR REPLACE] TRIGGER <触发器名> BEFORE"AFTER INSERT"DELETE"UPDATE OF <列名> ON <表名> [FOR EACH ROW] WHEN (<条件>) 程序块> ON 子句中的名称识别与数据库触发器关联的数据库表 触发器事件...
读者不仅可以掌握oracle常用工具oracle universal installer、net comfiguration assistant、sql developer、sql*plus的作用及使用方法,而且可以掌握sql语句和pl/sql的各种基础知识和高级特征(记录类型、集合类型...
1.1 Oracle数据库产品结构及组成 1.1.1 企业版 1.1.2 标准版 1.1.3 标准版 1.1.4 个人版 1.2 数据库基本术语 1.2.1 数据库 1.2.2 数据库管理系统 1.2.3 数据库系统 1.2.4 数据库模式 1.2.5 数据模型 1.2.6 数据完整...
1.1 Oracle数据库产品结构及组成 1.1.1 企业版 1.1.2 标准版 1.1.3 标准版 1.1.4 个人版 1.2 数据库基本术语 1.2.1 数据库 1.2.2 数据库管理系统 1.2.3 数据库系统 1.2.4 数据库模式 1.2.5 数据模型 1.2.6 数据完整...