【发布时间】:2017-09-19 21:15:10
【问题描述】:
实际上,我正在创建一个插入或更新或删除前触发器,它将查看表IMP_CUSTOMER 并将更新、插入或删除的数据集记录到表LOG_IMP_CUSTOMER 中。一切正常,但我只是错过了一点:
表中的数据可以由不同的数据库用户更改,我正在尝试让对表进行更改的用户也将其记录到我的日志表中。
这是我到现在为止的触发器:
CREATE OR REPLACE TRIGGER TRG_LOG_IMP_CUSTOMER
BEFORE INSERT OR UPDATE OR DELETE ON IMP_CUSTOMER
REFERENCING OLD AS old_buffer NEW AS new_buffer FOR EACH ROW
DECLARE
log_date TIMESTAMP;
sql_type VARCHAR(1);
log_user VARCHAR(10);
BEGIN
-- set log_date
log_date := SYSDATE;
-- set sql_type
IF INSERTING THEN sql_type := 'I';
END IF;
IF UPDATING THEN sql_type := 'U';
END IF;
IF DELETING THEN sql_type := 'D';
END IF;
-- set log_user
log_user := 'USER'; -- hardcoded for test
-- log update and delete
IF UPDATING OR DELETING THEN
INSERT INTO LOG_IMP_CUSTOMER VALUES (:old_buffer.CIF_ID,:old_buffer.PHONE_NUMBER,:old_buffer.PHONE_AREACODE,SEQ_LOG_IMP_CUSTOMER.nextval,log_date,sql_type,log_user);
END IF;
-- log insert
IF INSERTING THEN
INSERT INTO LOG_IMP_CUSTOMER VALUES
(:new_buffer.CIF_ID,:new_buffer.PHONE_NUMBER,:new_buffer.PHONE_AREACODE,SEQ_LOG_IMP_CUSTOMER.nextval,log_date,sql_type,log_user);
END IF;
END;
/
我只是在寻找任何方式将log_user 设置为已完成更改的用户。
有什么好主意?
感谢和问候, 大卫
【问题讨论】:
-
去掉引号:
log_user := USER;