oracle - 错误(3,31): PL/SQL: ORA-00984: Column is not allowed here

标签 oracle plsql triggers compiler-errors

我正在写以下oracle sql触发器

CREATE OR REPLACE TRIGGER scheme1.INSERTING_TRIGGER AFTER INSERT  ON scheme1.Bill
    FOR EACH ROW
    BEGIN
    INSERT INTO scheme2.DM_LOGGER(ID, TECHNOLOGY, WORKFLOW, NAME_EVENT, TIME_EVENT)
    VALUES(scheme1.Bill.id,'Repository','UP','Accepted', SYSDATE);   
    END;

并引发以下错误:
  • 错误(2,1):PL/SQL:忽略了SQL语句
  • 错误(3,31):PL/SQL:ORA-00984:此处不允许使用该列。

  • 如果我的猜测是正确的,则问题出在DM_LOGGER的ID列中。
    但是我不确定这是怎么回事。我只想从记录器中自动插入新Bill记录中的id。

    最佳答案

    您需要使用NEW记录:

    CREATE OR REPLACE TRIGGER scheme1.INSERTING_TRIGGER AFTER INSERT  ON scheme1.Bill
        FOR EACH ROW
        BEGIN
        INSERT INTO scheme2.DM_LOGGER(ID, TECHNOLOGY, WORKFLOW, NAME_EVENT, TIME_EVENT)
        VALUES(:NEW.id,'Repository','UP','Accepted', SYSDATE);   
        END;
    

    http://docs.oracle.com/cd/E11882_01/appdev.112/e25519/triggers.htm#LNPLS99955

    关于oracle - 错误(3,31): PL/SQL: ORA-00984: Column is not allowed here,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29771474/

    相关文章:

    oracle - 如何将数据从 PL/SQL 包导入 SPSS?

    mysql - 触发器中的多个查询

    java - 如何监听集合中的变化?

    java - 从 Java 调用 PL/SQL Web Toolkit 过程

    database - Oracle 外部表 - 指定动态文件名

    c++ - 使用来自 SOCI 的匿名 PL SQL block 调用 PLsql 脚本

    php - 创建简单的 MySQL 更新触发器时出现问题

    java - JDBC 在应用程序级别自动提交为 false

    sql - 更新单列的所有行

    .net - 我需要做什么才能让 Mono 应用程序与 Oracle 对话?