Oracle数据库使用触发器记录表数据修改记录
2011-12-08 22:24
375 查看
--日志记录表 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数据库零碎---Oracle Merge 使用,表中存在数据就修改,没有数据自动添加
- Oracle中用触发器实现自动记录表数据被修改的历史信息
- Oracle中用触发器实现自动记录表数据被修改的历史信息
- 数据库数据被改,使用log explorder查询修改记录
- MySQL中日期类型数据的使用:如何让字段保存记录的创建时间和最后修改时间
- 使用触发器一次性修改多条记录
- 通过触发器实现记录数据的修改日志
- Oracle中用触发器实现自动记录表数据被修改的历史信息
- Oracle中用触发器实现自动记录表数据被修改的历史信息
- 触发器记录表某一个字段数据变化的日志 包括插入insert 修改update 删除delete 操作
- 使用hibernate对oracle数据库中数据分页出现重复记录
- Oracle中用触发器实现自动记录表数据被修改的历史信息
- 使用数据库级触发器记录数据库更改历史
- 关于SQLServer2000中触发器的使用——多行数据提交
- 使用Hibernate映射技术将Mysql数据复制到Oracle数据库
- 使用VBS修改二进制文件HEX数据
- 第7章-使用ORM类库Mongoose提升你的Node.js数据-7.9.修改原型的行为
- SQL 使用XML数据修改语言
- [转]使用NLog记录日志到数据库 自定义日志表的数据格式
- 使用charles对app请求进行抓包,请求断点,修改请求与返回的数据,重新发送请求