Oracle复合触发器

时间:2014-04-17 21:15:51

标签: sql oracle

我意识到这是一个非常基本的问题,但我已经被困了三个小时,我找不到任何帮助论坛的任何提示。

我今天开始使用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。我更改了默认语句分隔符;到/

1 个答案:

答案 0 :(得分:1)

您正在收到错误,因为您运行的是旧版本的Oracle(9.2.0.6已被弃用了很多年),当时并不存在复合触发器。在9.2中,您必须声明多个一起工作的触发器,以解决变异触发器错误。