【问题标题】:Error at line 3: PL/SQL: ORA-01747: invalid user.table.column, table.column, or column specification第 3 行错误:PL/SQL: ORA-01747: 无效的 user.table.column、table.column 或列规范
【发布时间】:2015-12-06 09:27:23
【问题描述】:

您好,我在 oracle 中编写了一个 sql 脚本。

CREATE OR REPLACE TRIGGER TIPUSUPDATE
AFTER UPDATE OF RENDSZAM, MODELL
ON AUTO
FOR EACH ROW
BEGIN
    UPDATE TIPUS
    SET TIPUS.RENDSZAM = :NEW.RENDSZAM,
    SET TIPUS.MODELL = :NEW.MODELL
    WHERE TIPUS.RENDSZAM = :OLD.RENDSZAM
    AND TIPUS.MODELL = :OLD.MODELL;
END;

我创建了表格,但是当我运行此脚本时,我收到一条错误消息:

第 3 行出错:PL/SQL: ORA-01747: 无效的 user.table.column、table.column 或列规范。

有人可以帮帮我吗?

【问题讨论】:

  • 好吧,一方面,set 语句中不能有 2 个 set 子句。

标签: oracle plsql


【解决方案1】:

我尝试了以下操作,它正在工作。就像 sstan 前面提到的那样,更新语句中不能有 2 个 set 子句。确保在执行以下操作之前创建表 AUTO 和 TIPUS

CREATE OR REPLACE TRIGGER TIPUSUPDATE
AFTER UPDATE OF RENDSZAM, MODELL ON AUTO
FOR EACH ROW
BEGIN
UPDATE TIPUS
SET TIPUS.RENDSZAM = :NEW.RENDSZAM,
TIPUS.MODELL = :NEW.MODELL
WHERE TIPUS.RENDSZAM = :OLD.RENDSZAM
AND TIPUS.MODELL = :OLD.MODELL;
END;
/

【讨论】:

    【解决方案2】:

    始终记得在调用您的表之前添加 SCHEMA NAME 前缀。

    CREATE OR REPLACE TRIGGER <schema_name>.TIPUSUPDATE
    AFTER UPDATE OF RENDSZAM, MODELL
    ON <schema_name>.AUTO
    FOR EACH ROW
    BEGIN
        UPDATE <schema_name>.TIPUS
        SET TIPUS.RENDSZAM = :NEW.RENDSZAM,
            TIPUS.MODELL = :NEW.MODELL
        WHERE TIPUS.RENDSZAM = :OLD.RENDSZAM
        AND TIPUS.MODELL = :OLD.MODELL;
    END;
    

    【讨论】:

    • 为什么你认为这是一个命名问题?
    猜你喜欢
    • 2012-03-16
    • 2018-12-19
    • 2013-04-28
    • 2015-05-01
    • 2013-10-21
    • 2016-10-25
    • 2021-03-05
    • 1970-01-01
    • 2012-01-21
    相关资源
    最近更新 更多