暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

after delete trigger

原创 章芋文 2014-02-07
699
在未开启审计的系统中,一张核心业务数据表,需要记录下非业务用户删除数据的操作。即创建一个记录其他用户删除表数据的trigger。
下面是简单测试:
t_test为测试数据表,obj_after_delete为触发器,业务用户为awen,如果是非业务用户删除表数据,trigger就将信息记录到del_rec表中。
[code]SQL> desc del_rec
Name Null? Type
------------------------------------------------- -------- ----------------
USERNAME VARCHAR2(20)
ID NUMBER(5)
DEL_TIME DATE

SQL> desc t_test
Name Null? Type
------------------------------------------------- -------- ----------------
OWNER VARCHAR2(30)
OBJECT_NAME VARCHAR2(128)
SUBOBJECT_NAME VARCHAR2(30)
OBJECT_ID NUMBER
DATA_OBJECT_ID NUMBER
OBJECT_TYPE VARCHAR2(19)
CREATED DATE
LAST_DDL_TIME DATE
TIMESTAMP VARCHAR2(19)
STATUS VARCHAR2(7)
TEMPORARY VARCHAR2(1)
GENERATED VARCHAR2(1)
SECONDARY VARCHAR2(1)
NAMESPACE NUMBER
EDITION_NAME VARCHAR2(30)


CREATE OR REPLACE TRIGGER obj_before_delete
AFTER DELETE ON awen.t_test
FOR EACH ROW
BEGIN
if(user!='AWEN') then
INSERT INTO awen.del_rec (id,USERNAME,DEL_TIME) VALUES (:old.object_id,user,sysdate);
end if;
END;[/code]
可以扩展记录更多信息,另外,trigger对性能可能会有影响,须测试后再部署生成环境。
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论