【问题标题】:Error ORA-04079: invalid trigger specification错误 ORA-04079: 无效的触发器规范
【发布时间】:2017-10-13 03:50:52
【问题描述】:

一个触发器可以有多个表吗?假设我有 Employee、Skill 和 Customer 表,并且我有 Eventlogs 表来捕获审计。我尝试添加 Skill_T,但出现 ORA-04079 错误。有什么更正吗?谢谢!

注意:我使用的是 Oracle SQL Developer Oracle11gEE

CREATE OR REPLACE TRIGGER AUDIT_REC
AFTER INSERT OR DELETE OR UPDATE ON EMPLOYEE_T, SKILL_T
FOR EACH ROW
DECLARE
  V_LOGID NUMBER;
    V_USER  VARCHAR(30);
    V_DATE  VARCHAR(30);

BEGIN
  SELECT EVENTLOG_ID_SEQ.NEXTVAL, USER, SYSDATE INTO V_LOGID, V_USER, V_DATE FROM DUAL;
  IF INSERTING THEN
    INSERT INTO EVENTLOGS(Eventlog_id, User_name, Date_done, Action_done)
    VALUES (V_LOGID, V_USER, V_DATE, 'INSERT');
  ELSIF DELETING THEN
    INSERT INTO EVENTLOGS(Eventlog_id, User_name, Date_done, Action_done)
    VALUES (V_LOGID, V_USER, V_DATE, 'DELETE');
  ELSIF UPDATING THEN
    INSERT INTO EVENTLOGS(Eventlog_id, User_name, Date_done, Action_done)
    VALUES (V_LOGID, V_USER, V_DATE, 'UPDATE');
  END IF;
END;
/

【问题讨论】:

    标签: plsql oracle11g triggers


    【解决方案1】:

    DML 触发器仅与一个表关联(绑定)。它仅在针对该表提交 DML 时执行。 见http://docs.oracle.com/cd/E11882_01/appdev.112/e25519/triggers.htm#LNPLS99888

    【讨论】:

    • 谢谢赫曼特。我现在将为每个表创建一个触发器。
    猜你喜欢
    • 1970-01-01
    • 2016-08-02
    • 2013-07-08
    • 1970-01-01
    • 2021-12-12
    • 1970-01-01
    • 1970-01-01
    • 2011-03-10
    • 2015-04-30
    相关资源
    最近更新 更多