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