请问记录对某个表的删除操作的触发器该怎么写?

zhanglan1999 2008-07-22 09:55:43

我有一个表,想记录下来客户端对它进行的操作(主要想记录删除操作),
当客户端对表table1进行删除操作时,我想记录下来删除操作的SQL语句及操作时间写到table2中去
这个触发器该怎么写呢?
新手求教,请大家帮我,谢谢。
...全文
152 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
Andy__Huang 2008-07-24
  • 打赏
  • 举报
回复
写一个触器,把删除之前的资料写到日志里,

不管它是用什么语句删除
njhart2003 2008-07-22
  • 打赏
  • 举报
回复
:old.xxxx

dbcxbj 2008-07-22
  • 打赏
  • 举报
回复
时间好插
关键是执行的delete代码怎样确定
等待高手
jadeyu 2008-07-22
  • 打赏
  • 举报
回复
高手呀?
ejoe313 2008-07-22
  • 打赏
  • 举报
回复
删除执行的代码,应该是无法确定的……
新鲜鱼排 2008-07-22
  • 打赏
  • 举报
回复
CREATE TRIGGER trigger_name
AFTER DELETE ON col_name
FOR EACH ROW
BEGIN
insert into table2(sys_time) values(current_timestamp at time zone 'GMT');
END;

删除执行的代码应该无法确定。
doer_ljy 2008-07-22
  • 打赏
  • 举报
回复
如果是oracle9.2.0.7之前的版本
可以在delete的trigger中使用如下语句获得DML。

CREATE OR REPLACE TRIGGER del_DML tmp
BEFORE DELETE ON table1
declare
n number;
stmt varchar2(4000);
sql_text ora_name_list_t;
begin
n := ora_sql_txt(sql_text);
FOR i IN 1..n LOOP
stmt := stmt || sql_text(i);
END LOOP;
--insert into table2(userid,str) values(user,stmt);
end;

不过在9.2.7之后这个功能被作为BUG修正了,之后就不能再用了。
包括10G

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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