Oracle

審計表插入限制

  • December 23, 2013

所以我試圖為一些使用者管理分析創建自己的審計表,並偶然發現了一個小問題。我用這個觸發器

CREATE OR REPLACE 
TRIGGER usr_t_audit_user_alnd
   AFTER LOGON ON DATABASE
   BEGIN
       INSERT INTO usr_t_audit_user (username, session_id, logon_day, logon_time)
       VALUES(UPPER(USER), SYS_CONTEXT('USERENV','SID'), SYSDATE, TO_CHAR(SYSDATE, 'HH24:MI:SS'));
   END;

在我的表格中插入一些標准資訊。它工作正常,除了我的另一個觸發器內的註銷時間並不總是那麼正確。但我的實際問題是,我不想插入所有使用者登錄。例如,我只想審核一些選定的使用者。我怎樣才能達到這樣的限制?我不能WHERE在觸發器中添加 - 子句。有人有什麼想法嗎?

你可能想使用類似的東西,

CREATE OR REPLACE TRIGGER usr_t_audit_user_alnd AFTER LOGON ON DATABASE
BEGIN
 -- insert audit record only if user is one of specified, else ignore
 if ora_login_user in ('USER_A','USER_C','USER_D') then
   INSERT INTO usr_t_audit_user (username, session_id, logon_day, logon_time)
   VALUES(UPPER(USER), SYS_CONTEXT('USERENV','SID'), SYSDATE, TO_CHAR(SYSDATE, 'HH24:MI:SS'));
 end if;
END;

您可以在觸發器中的 INSERT stmt 周圍添加 IF 條件。

引用自:https://dba.stackexchange.com/questions/50778