我试图创建一个触发器,它将检查输入的日期是否在范围内,如果输入的Prog_Type
是'FILM'
,但每次语句运行时都会收到编译错误。SQL触发器WHEN子句编译错误
错误代码是00103,“遇到一个;预计当......”
那么多标点符号的列表。从研究问题中我看到了对DECLARE
声明的引用,但是我不确定我需要声明Prog_Type
是否在Program_Table
中创建,并且我在触发器中引用了该表。
CREATE OR REPLACE TRIGGER Prog_Made_Limits
BEFORE INSERT OR UPDATE OF Prog_Made ON Program_Table
FOR EACH ROW
WHEN (NEW.Prog_Type <> 'FILM')
BEGIN
IF (:new.Prog_Made < date '1864-12-31' or
:new.Prog_Made > sysdate);
THEN
RAISE_APPLICATION_ERROR(-20001, 'Program Made date must be later than Dec 31st 1864, and earlier than today, if FILM is inserted');
END IF;
END Prog_Made_Limits;
/
会发生什么事,如果你删除';'')'和'THEN'之间? – ruakh 2013-02-11 21:09:43
令人惊讶的是,错误信息告诉你*完全*问题是什么... – 2013-02-12 02:39:42