我需要一些我正在尝试创建的SQL触发器的帮助。我一直收到错误
ORA - 04074:无效的REFERENCING名称
从我查看的内容来看,我所提供的引用名称是一个关键字,但我使用了多个名称并且总是遇到同样的错误。
以下是代码:
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比较陌生,所以任何帮助都会非常有价值。
提前致谢!
答案 0 :(得分:2)
这个问题是PL / SQL。
引用的语法是:
REFERENCING NEW AS nrw
没有" ROW"。
正如Farheg所说,你错过了每一行并且打印不是你想要的。你可能不得不提出异常。但这是一个猜测。 阅读语法(11g): http://docs.oracle.com/cd/E11882_01/appdev.112/e25519/create_trigger.htm#LNPLS01374
答案 1 :(得分:1)
你错过了一个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;
/