0

我目前正在做家庭作业,并且卡在某个点上。我想为审计创建一个触发器,是的,我知道 FGA,但这不是被问到的。我的触发器需要记录当前的 SQL 进行审计。这就是我现在所拥有的。想象一下,我已经创建了表来存储插入值。

CREATE OR REPLACE TRIGGER ALL_SQL_AUDIT
AFTER UPDATE ON SCOTT.EMP
FOR EACH ROW
BEGIN
INSERT INTO ALL_SQL_AUDIT(TABLE_NAME, SQL_TEXT, SQL_TYPE, CHANGE_DATE, DB_USERNAME, OS_USERNAME)
SELECT 'SCOTT.EMP',
    SYS_CONTEXT('USERENV','CURRENT_SQL'),
    'UPDATE',
    SYSDATE,
    USER,
    SYS_CONTEXT('USERENV','OS_USER')
FROM dual;
END;
/

问题是 SYS_CONTEXT('USERENV','CURRENT_SQL') 永远不会返回任何东西,所以有人知道如何获取触发此事件的当前 DML 吗?

4

0 回答 0