oracle存储过程记录日志!!该怎么写

lw8500179 2010-04-28 02:56:44
创建了一个日志表
/*
Id 自增序列ID
operates 操作动作(增删改操作)
description 操作内容描述
Operates_time 操作时间
Operates_user 操作人
Operates_userid 操作人id*/
如何写个存储过程记录对数据库表的增删改操作写入到日志表中呢?
对数据库表的增删改操作也是用存储过程写的。
(注:不用触发器)

...全文
1729 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
MrMaxl 2011-05-16
  • 打赏
  • 举报
回复
我都替楼主郁闷,都什么人的什么回答......
lw8500179 2010-04-30
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 ptpa 的回复:]
引用楼主 lw8500179 的回复:
创建了一个日志表
/*
Id 自增序列ID
operates 操作动作(增删改操作)
description 操作内容描述
Operates_time 操作时间
Operates_user 操作人
Operates_userid 操作人id*/
如何写个存储过程记录对数据库表的增删改操作写入到日志表中呢?
对数据库表的增删改操作也是用存储……
[/Quote]
这个记录日志的存储过程是作为一个公用的存储过程的,是记录对数据库表的操作,能给个例子么 ,我才开始学写这个 没头绪...
ptpa 2010-04-30
  • 打赏
  • 举报
回复
[Quote=引用楼主 lw8500179 的回复:]
创建了一个日志表
/*
Id 自增序列ID
operates 操作动作(增删改操作)
description 操作内容描述
Operates_time 操作时间
Operates_user 操作人
Operates_userid 操作人id*/
如何写个存储过程记录对数据库表的增删改操作写入到日志表中呢?
对数据库表的增删改操作也是用存储过程写的。
(注:不用触发器)
……
[/Quote]
你在对数据库表的增删改操作的存储过程里将相关操作写入到日志表
日志表里加一个字段 操作的表

PROCEDURE INSERT_TABLE1()
IS
BEGIN
--插入表
INSERT INTO TABLE1(COLUMN1,COLUMN2) VALUES('VALUE1','VALUE2') ;
--插入记录,当然,也可以将插入日志表的记录写成存储过程,然后调用
INSERT INTO LOG_TABLE(operates,description,Operates_userid,Opra_table)
VALUES('operates','description'',Operates_userid','Opra_table');
END INSERT_TABLE1;
涉及大量的经常插入、更新、删除的表,可以考虑单独建立日志表
lw8500179 2010-04-30
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 coolkisses 的回复:]
首先确定针对数据库中一张表还是所有表记录日志
再次确定数据库插入表数据的方式,是通过第三方调用还是纯后台插入

把事想全了,再定个方式,自己写日志也好,通过触发器也好,都不是什么问题
[/Quote]
是所有表,插入方式也是后台插入,这个存储过程该怎么写寻求达人解决!!
lw8500179 2010-04-29
  • 打赏
  • 举报
回复
没有人回答啊。。。顶下先 别沉了...
gltyi99 2010-04-29
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 iihero 的回复:]

引用 8 楼 lw8500179 的回复:

需求在这儿了么...需要有这样的表来记录!


那就针对所有要操作的表创建对应的触发器好了。开通审记功能,这些东西都会自动记载,不过,是不能层面的东西。
[/Quote]

开通审计功能,数据库的性能会下降20%~30%

这个不是银行,税务,电信等重要数据库,还是不要开的好了
gltyi99 2010-04-29
  • 打赏
  • 举报
回复
你的需求不是很明确啊

要是对表,可以使用触发器来做

要是对事物,可以在写一个存储过程来记录相关日志,这个存储过称由事物来调用。

有什么需求,你可以给我发消息,我在给你想个办法
coolkisses 2010-04-29
  • 打赏
  • 举报
回复
首先确定针对数据库中一张表还是所有表记录日志
再次确定数据库插入表数据的方式,是通过第三方调用还是纯后台插入

把事想全了,再定个方式,自己写日志也好,通过触发器也好,都不是什么问题
lw8500179 2010-04-28
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 iihero 的回复:]
引用 8 楼 lw8500179 的回复:

需求在这儿了么...需要有这样的表来记录!


那就针对所有要操作的表创建对应的触发器好了。开通审记功能,这些东西都会自动记载,不过,是不能层面的东西。
[/Quote]
那您可以给我一个对一个表操作的例子吗,我一点都不会呢 ,谢谢啦!!!
iihero 2010-04-28
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 lw8500179 的回复:]

需求在这儿了么...需要有这样的表来记录!
[/Quote]

那就针对所有要操作的表创建对应的触发器好了。开通审记功能,这些东西都会自动记载,不过,是不能层面的东西。
lw8500179 2010-04-28
  • 打赏
  • 举报
回复
需求在这儿了么...需要有这样的表来记录!
iihero 2010-04-28
  • 打赏
  • 举报
回复
[Quote=引用楼主 lw8500179 的回复:]
创建了一个日志表
/*
Id 自增序列ID
operates 操作动作(增删改操作)
description 操作内容描述
Operates_time 操作时间
Operates_user 操作人
Operates_userid 操作人id*/
如何写个存储过程记录对数据库表的增删改操作写入到日志表中呢?
对数据库表的增删改操作也是用存储过程写的。
(注:不用触发器)
……
[/Quote]

看着就像数据库的审记功能啊。为何还要造轮子呢?
lw8500179 2010-04-28
  • 打赏
  • 举报
回复
就是不会啊!!给个例子 谢谢啦!!!......
ojuju10 2010-04-28
  • 打赏
  • 举报
回复
不要触发器,除非在每条DML之后,都将相关的信息插入到日志表中
ojuju10 2010-04-28
  • 打赏
  • 举报
回复
不要触发器,无法实现
luoyoumou 2010-04-28
  • 打赏
  • 举报
回复
-- 还有:应该在 日志表 中加一个“操作对象(或者:操作表名称)”,加以区分!

-- 问题简单:自己看着办!
luoyoumou 2010-04-28
  • 打赏
  • 举报
回复
-- 如果是所有表的话,你这个就还应该在所有表上均创建一个触发器,
-- 用触发器实现是最好的!

-- 为什么不肯用触发器呢?
luoyoumou 2010-04-28
  • 打赏
  • 举报
回复
-- 是对数据库所有表、还是数据库中的某一张表记录日志呢?

17,089

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧