我有一個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,但我仍然只能得到一個較舊的用戶標識,而不是刪除此記錄的用戶。
如果我想更改綁定器,以便它可以維護對誰刪除記錄的審計,我該如何處理?有什麼我可以通過代碼傳遞?如果你想要的用戶名,而不是您可以使用用戶的功能,而不是UID的ID號
CREATE TRIGGER AUD_CONFIG_TRG
AFTER INSERT OR UPDATE OR DELETE ON CONFIG
REFERENCING NEW AS NEW
OLD AS OLD
FOR EACH ROW
DECLARE
V_USER_VALUE_TXT VARCHAR2(32);
BEGIN
IF INSERTING OR UPDATING THEN
V_USER_VALUE_TXT := :NEW.AUDIT_UPDATED_USER_ID;
END IF;
IF DELETING THEN
V_USER_VALUE_TXT := UID;
END IF;
END AUD_CONFIG_TRG;
:
+1個大問題 - 我們最近有同樣的問題。我們通過從所有表中取消DELETE特權來解決這個問題。並添加「軟刪除」功能 - 即向表中添加「刪除」標誌,將用戶的「刪除」操作轉換爲標誌的簡單更新。 – 2012-03-06 04:16:42