日期:2014-05-17  浏览次数:21104 次

日志业务考虑用触发器
项目有一个需求,针对多个表的数据修改做一个日志历史记录
比如一个业务表 
SQL code

create table t_org(
id number(10) primary key,
name varchar2(50),
createdate date,
createuser varchar2(30),
org_level number(5),
parentid number(10),
constraint foreign key(id)
)


针对此表每条记录的修改都做一个日志记录,详细记录每个字段的变更

在这个日志表设计上不知各位有好的想法不?
有想过可以用触发器做吗?

------解决方案--------------------
使用触发器要是想记录之前的值是不是还得查询一下,使用触发器对于开发人员省了不少事情。
不适用触发器也是可以的,使用某个类。当每次数据库操作成功时就使用这个类,可以控制的记录操作类型、旧值、新值、操作时间等。(需要建立另一个记录表),这样就费了不少事情
------解决方案--------------------
1 Oracle里的UTF_FILE操作不是事务操作,如果你回滚了,日志也已经写入了,当然用after可以避免

2 开销大,小项目看不出来

3 触发器是被动操作,触发器一多,对业务需要有全局的掌控,复杂的业务系统容易造成逻辑冲突。

公司里都是稳定性+健壮性 > 功能 > 性能