【发布时间】:2012-03-05 16:11:59
【问题描述】:
我有一个 PL/SQL 审计触发器,它记录对表所做的所有更改。
我能够找到插入/删除记录的 user_id。 (user_id 来自一个 Web 应用程序,我目前无权访问该代码)。
所以,
TRIGGER AUD_CONFIG_TRG
AFTER INSERT OR UPDATE OR DELETE ON CONFIG
IF INSERTING OR UPDATING THEN
v_user_value_txt := :NEW.AUDIT_UPDATED_USER_ID;
但是,对于删除,我不能简单地使用 OLD.AUDIT_UPDATED_USER_ID,也不能使用新的,因为无法访问新记录。
我考虑过使用 BEFORE DELETE,但我仍然只能获得一个较旧的用户 ID,而不是删除此记录的那个。
如果我想更改装配工以便它可以对谁删除了记录进行审计,我该怎么做?有什么办法可以通过代码传递吗?
【问题讨论】:
-
+1 好问题 - 我们最近遇到了同样的问题。我们通过撤销所有存在问题的表的 DELETE 权限来解决它;并添加“软删除”功能 - 即向表中添加“已删除”标志,将用户的“删除”操作转变为对标志的简单更新。