请问能不能在ORACLE监控对个别字段的操作,比如当某个字段被修改后,能在后台自动记下修改者的登录用户名,IP地址,及所修改的记录的原值,和新值等
解决方案 »
- 这个sql应该怎样写
- 该Oracle统计的SQL如何写
- oracle11怎么备份oracle10G的数据
- 眼毒的高手帮忙找找问题所在
- 请问在oracle怎样得到所有引用某个表的表名等信息
- ORACLE 的session问题,立刻给分
- 请问如何对某一计算出来的结果进行四舍五入呢?例如某两个时间相减之后的结果进行整数的四舍五入
- 把日期 格式 09-7月-04 转换成2004-09-07 23:00 出现文字与格式字符串不匹配?
- 有关性能问题,执行已预编译的prepare sql 1次,执行一种是普通sql,两个大概可能相差多少时间,如果100条这样的语句又相差多少时间,使用
- Oracle安装问题,在线等!高分相送!
- 如何在oracle 9i中设立表的主从关系?
- 问一个关于到cursor效率的问题。
1、可以利用trigger来完成你的操作
2、trigger可以完成最小单位为行的监测,如果要记录对列的更改,那你需要在trigger中手动比对,比如if :old.col1<>:new.col1 then ...
3、可以记录用户名,原值,新值,但一定得不到ip
有点小题大做了。
在相应表上做after update of col1触发器即可,
当被修改时,记录当前用户、用户计算机名,原值、新值
都可以
create table a1 (
id number(8),
compname varchar2(20),
compcode varchar2(50),
chapter varchar2(50),
compnumber number(8),
dealdate date
);create table a2 (
id number(8),
compname varchar2(20),
compcode varchar2(50),
chapter varchar2(50),
compnumber number(8),
dealdate date
); CREATE OR REPLACE TRIGGER tr_bf_test
BEFORE INSERT OR UPDATE OR DELETE OF ID ON a1
FOR EACH ROW
BEGIN
IF INSERTING THEN
INSERT INTO a2
VALUES(:new.id,:new.compname,:new.compcode,:new.chapter,:new.compnumber,:new.dealdate);
ELSIF UPDATING THEN
UPDATE a2 SET id=:new.ID,
compname=:new.compname,
compcode=:new.compcode,
chapter=:new.chapter,
compnumber=:new.compnumber,
dealdate=:new.dealdate
WHERE ID = :old.ID;
ELSE
DELETE FROM a2
WHERE ID = :old.ID;
END IF;
END tr_bf_TTRIG;
/