我意识到这是一个非常基本的问题,但我已经被困了三个小时,我找不到任何帮助论坛的任何提示。
我今天开始使用PL SQL,我立刻遇到了表突变问题。我现在想写一个复合触发器来解决问题。
但是,即使从Oracle的文档页面复制以下代码,我也无法运行最基本的复合触发器。
http://docs.oracle.com/cd/B28359_01/appdev.111/b28370/triggers.htm#LNPLS2005
我收到以下错误:
Error: ORA-04071: missing BEFORE, AFTER or INSTEAD OF keyword
SQLState: 42000
ErrorCode: 4071
当我运行时:
CREATE OR REPLACE TRIGGER AverageUpdate FOR UPDATE OF Rating ON UserGame
COMPOUND TRIGGER;
BEFORE STATEMENT IS
BEGIN
NULL;
END BEFORE STATEMENT;
BEFORE EACH ROW IS
BEGIN
NULL;
END BEFORE EACH ROW;
AFTER EACH ROW IS
BEGIN
NULL;
END AFTER EACH ROW;
AFTER STATEMENT IS
BEGIN
NULL;
END AFTER STATEMENT;
END AverageUpdate;
/
有人能帮助我理解为什么吗?
注意:我正在使用Squirrel。我更改了默认语句分隔符;到/
答案 0 :(得分:1)
您正在收到错误,因为您运行的是旧版本的Oracle(9.2.0.6已被弃用了很多年),当时并不存在复合触发器。在9.2中,您必须声明多个一起工作的触发器,以解决变异触发器错误。