如何创建触发器以在oracle中存储所有DML? 使用Oracle的审计功能将更简单、更有效。你不使用它有什么原因吗?您正在运行哪个版本的Oracle?版本:Oracle 11g和12cI希望在用户触发表时有一个触发器来存储表中的所有DML。因此,希望创建
如何创建触发器以在oracle中存储所有DML?如何创建触发器以在oracle中存储所有DML? 使用Oracle的审计功能将更简单、更有效。你不使用它有什么原因吗?您正在运行哪个版本的Oracle?版本:Oracle 11g和12cI希望在用户触发表时有一个触发器来存储表中的所有DML。因此,希望创建,oracle,database-trigger,Oracle,Database Trigger,如何创建触发器以在oracle中存储所有DML? 使用Oracle的审计功能将更简单、更有效。你不使用它有什么原因吗?您正在运行哪个版本的Oracle?版本:Oracle 11g和12cI希望在用户触发表时有一个触发器来存储表中的所有DML。因此,希望创建一个触发器,以便在运行DML语句时自动触发。执行此触发器时是否出现特定错误?无错误,但DML查询未存储在表中 CREATE OR REPLACE TRIGGER trg_dml_info -- BEFORE LOGOFF ON DATABA
使用Oracle的审计功能将更简单、更有效。你不使用它有什么原因吗?您正在运行哪个版本的Oracle?版本:Oracle 11g和12cI希望在用户触发表时有一个触发器来存储表中的所有DML。因此,希望创建一个触发器,以便在运行DML语句时自动触发。执行此触发器时是否出现特定错误?无错误,但DML查询未存储在表中
CREATE OR REPLACE TRIGGER trg_dml_info
-- BEFORE LOGOFF ON DATABASE
AFTER SELECT OR INSERT OR UPDATE OR DELETE ON SCHEMA
DECLARE
session_id VARCHAR2(10),
user_logon_name VARCHAR2(30),
sql_idd VARCHAR2(10),
sql_child_numbert VARCHAR2(30),
optimizer_modee VARCHAR2(30),
sql_textt VARCHAR2(1000)
BEGIN
SELECT x.sid
INTO session_id
FROM v$sqlarea x;
SELECT x.USERNAME
INTO user_logon_name
FROM v$sqlarea x;
SELECT x.SQL_ID
INTO sql_idd
FROM v$sqlarea x;
SELECT x.SQL_CHILD_NUMBER
INTO sql_child_numbert
FROM v$sqlarea x;
SELECT x.OPTIMIZER_MODE
INTO optimizer_modee
FROM v$sqlarea x;
SELECT x.SQL_TEXT
INTO sql_textt
FROM v$sqlarea x;
INSERT INTO DML$info VALUES
(session_id,user_logon_name,sql_idd,sql_child_numbert,optimizer_modee,sql_textt)
where x.sql_hash_value = sqlarea.hash_value
and x.sql_address = sqlarea.address;
commit;
END;