请教满足下面需求的一个触发器:监控对数据库中所有表的DML操作语句的触发器,并记录到如下的表中:
TABLE_OWNER 表用户
TABLE_NAME 表名
OPER_FLAG 操作类型(INSERT,UPDATE,DELETE,MERGE)
DML_TEXT 操作语句
SYS_TIME 操作时间
CLIENT_HOST 机器名因为在网上找到的都是基于单表的触发器,但是现在数据库中有上千张表,所以不清楚对全数据库表监控的触发器应如何写,请高手们指教了
TABLE_OWNER 表用户
TABLE_NAME 表名
OPER_FLAG 操作类型(INSERT,UPDATE,DELETE,MERGE)
DML_TEXT 操作语句
SYS_TIME 操作时间
CLIENT_HOST 机器名因为在网上找到的都是基于单表的触发器,但是现在数据库中有上千张表,所以不清楚对全数据库表监控的触发器应如何写,请高手们指教了
解决方案 »
- AIX已装好,Oracle11gr2亦已装好,dbca建库时出错~~~
- 在做从Access到Oracle的转换问一个关于日期函数的问题。
- 我的一个修改表的语句出错,请问是怎么回事,非常急!!!!
- 怎样查询某个字段不含指定字符的记录
- 急~~~ Oracle数据库的同步问题。
- oracel如何回滚操作的事务
- oracle9i安装成功后,启动jboss时,出现“端口8080被JVM绑定”的错误
- 如何看到一个表的结构
- Unix下的oracle8.0.5导入win20009.0字符集问题?
- C#连接oracle数据库进行添加用户名和密码,还要检测用户名是否已经存在
- 急!!asp始终无法连上正常工作的ODBC的oracle数据源
- 如何将INSERT语句存放到SQL脚本并使用替代变量为表插入数据,急!
BEFORE DELETE OR INSERT OR UPDATE
ON 表名
FOR EACH ROW
BEGIN
IF INSERTING
THEN
INSERT INTO logs
VALUES (USER,
'emp',
'insert',
SYSDATE,
);
ELSIF DELETING
THEN
INSERT INTO logs
VALUES (USER,
'emp',
'insert',
SYSDATE,
);
ELSE
INSERT INTO logs
VALUES (USER,
'emp',
'insert',
SYSDATE,
);
END IF;
END;
CREATE OR REPLACE TRIGGER dml_log
BEFORE DELETE OR INSERT OR UPDATE
ON 表名
FOR EACH ROW
BEGIN
IF INSERTING
THEN
INSERT INTO logs
VALUES (USER,
'emp',
'insert',
SYSDATE,
);
ELSIF DELETING
THEN
INSERT INTO 表名
VALUES (USER,
'emp',
'delete',
SYSDATE,
);
ELSE
INSERT INTO 表名
VALUES (USER,
'emp',
'update',
SYSDATE,
);
END IF;
END;