SQL 中的无效引用名称,无论名称如何

Invalid Referencing Name in SQL regardless of name

我需要一些关于我正在尝试创建的 SQL 触发器的帮助。我一直收到错误

ORA - 04074: invalid REFERENCING name

根据我的查找,这表明我提供的引用名称是关键字,但我使用了多个名称并且总是 运行 出现相同的错误。

代码如下:

CREATE OR REPLACE TRIGGER CatchSightInserts
AFTER INSERT ON SIGHTINGS
REFERENCING NEW ROW AS nrw
WHEN (nrw.LOCATION IN (SELECT LOCATION
                       FROM FEATURES
                       WHERE CLASS = 'SUMMIT'))
PRINT 'An invalid entry was inserted.'
END
/

我也试过将第 3 行更改为

REFERENCING NEW ROW AS NewRow 

万一是这个名字引起了问题,但错误仍然存​​在。我对 SQL 比较陌生,所以任何帮助都将非常有价值。

提前致谢!

你漏掉了一个 BEGIN 字和 FOR EACH ROW 我认为你需要它,你还漏掉了打印命令后的分号 ; (我不确定 Oracle 中是否存在) 以及 END:

之后
CREATE OR REPLACE TRIGGER CatchSightInserts
AFTER INSERT ON SIGHTINGS
REFERENCING NEW ROW AS nrw
FOR EACH ROW
WHEN (nrw.LOCATION IN (SELECT LOCATION
                       FROM FEATURES
                       WHERE CLASS = 'SUMMIT'))
BEGIN
PRINT 'An invalid entry was inserted.';
END;
/

这个问题是PL/SQL。

引用的语法为:

REFERENCING NEW AS nrw

没有"ROW".

正如 Farheg 所说,您缺少每一行,打印不是您想要的。您可能不得不提出异常。但这是一个猜测。 阅读语法 (11g): http://docs.oracle.com/cd/E11882_01/appdev.112/e25519/create_trigger.htm#LNPLS01374