目的:记录某几张表的INSERT OR UPDATE OR DELETE操作
问题:我在自己的测试环境测试后没有问题,正式环境同样的方式创建触发器后,业务对表无法做变更(总共三张表,有一张表是可以正常记录的,另两张表异常),请问我的语句是否有问题?
我尝试将BEFORE改为after后问题依旧
1、创建触发器记录表
create table AUDIT_DML_TAB
(id_new NUMBER(38),
id_old NUMBER(38),
username VARCHAR2(30),
opt_date DATE,
opt_type VARCHAR2(10),
MODULE VARCHAR2(50),
session_id NUMBER(10),
hostname VARCHAR2(50)
);
2、创建触发器
CREATE OR REPLACE TRIGGER TRI_AUDIT_DML_TAB
BEFORE INSERT OR UPDATE OR DELETE ON oadb.DML_TAB
FOR EACH ROW
BEGIN
IF INSERTING THEN
INSERT INTO AUDIT_DML_TAB
VALUES
(:NEW.ID,
:OLD.ID,
USER,
SYSDATE,
‘INSERT’,
SYS_CONTEXT(‘USERENV’, ‘MODULE’),
USERENV(‘SID’),
SYS_CONTEXT(‘USERENV’, ‘HOST’));
ELSIF UPDATING THEN
INSERT INTO AUDIT_DML_TAB
VALUES
(:NEW.ID,
:OLD.ID,
USER,
SYSDATE,
‘UPDATE’,
SYS_CONTEXT(‘USERENV’, ‘MODULE’),
USERENV(‘SID’),
SYS_CONTEXT(‘USERENV’, ‘HOST’));
ELSIF DELETING THEN
INSERT INTO AUDIT_DML_TAB
VALUES
(:NEW.ID,
:OLD.ID,
USER,
SYSDATE,
‘DELETE’,
SYS_CONTEXT(‘USERENV’, ‘MODULE’),
USERENV(‘SID’),
SYS_CONTEXT(‘USERENV’, ‘HOST’));
END IF;
END;
/
墨值悬赏

评论
