我需要编写一个触发器,它将为SummerGames的(gameno)代码实现更新级联,但我一直遇到`错误(11,1):PLS-00103:遇到符号" CREATE
我正在使用Oracle SQL Developer。
我目前的代码:
create or replace TRIGGER SG_GAMENO_UPDATE
BEFORE UPDATE OF SG_GAMENO ON SUMMERGAMES
FOR EACH ROW
BEGIN
UPDATE SUMMERGAMES
SET SG_GAMENO = :new.SG_GAMENO
WHERE SG_GAMENO = :old.SG_GAMENO;
END;
答案 0 :(得分:1)
您需要结束触发器语句,该语句部分为PL / SQL,并且在一行上有一个/
。这将结束声明并使其运行。
create or replace TRIGGER SG_GAMENO_UPDATE
BEFORE UPDATE OF SG_GAMENO ON SUMMERGAMES
FOR EACH ROW
BEGIN
UPDATE SUMMERGAMES
SET SG_GAMENO = :new.SG_GAMENO
WHERE SG_GAMENO = :old.SG_GAMENO;
END;
/
目前,您的脚本中的任何内容 - 似乎是另一个create
语句 - 被视为同一触发器创建的一部分,并且该关键字在块内无效。
您的触发器似乎没有任何意义,当您尝试更新(将被检测并杀死)时,最多会导致无限递归,但这是一个单独的问题。也许您打算更新子表,而不是触发器所针对的同一个表。但你根本不应该更新PK;这就是synthetic keys are generally preferred over natural ones的原因。 gameno
听起来很合成。
答案 1 :(得分:0)
它会解决您的代码分离问题,我的意思是当您执行上面的代码片段时,您在其他代码中标记了某些部分,这就是您遇到语法错误的原因。尝试只执行上面的代码,从sql编辑器中删除任何其他代码