当我尝试尝试实现触发器语句时,我收到错误消息“遇到符号”更新“”但我不知道为什么会发生这种情况
CREATE OR REPLACE TRIGGER Trigger1
before DELETE OR UPDATE OR INSERT ON condition
FOR EACH ROW
WHEN (SYSDATE NOT BETWEEN
to_date(to_char(SYSDATE, 'DD.MM.RRRR') || '06:00', 'DD.MM.RRRR HH24:MI' )
AND to_date(to_char(SYSDATE, 'DD.MM.RRRR') || '12:00', 'DD.MM.RRRR-HH24:MI')) BEGIN
RAISE_APPLICATION_ERROR (-20001,
'You can only change my data between 06:00 and 12:00 ! ');
END;
update condition
set name='abc', description='xyz'
where condition_id=1;
答案 0 :(得分:1)
将/
放在触发器解除后的下一行
答案 1 :(得分:1)
PL / SQL代码需要在大多数Oracle开发环境中由/
字符终止(例如SQL * Plus或SQL Developer)。由于您没有终止CREATE TRIGGER
语句,因此当您执行该语句时,它会将下一个update condition ...
语句解释为PL \ SQL代码的一部分,但由于它是'在结束END;
声明之后被放置它无效。
在结束/
之后添加END;
应该为您解决问题。