创建“而不是”时出现编译错误视图的触发器
我为一个简单视图创建了一个“而不是”触发器,该视图仅在表上执行 select * 操作,并且创建了一个不执行任何操作的触发器(我想最大程度地减少问题):
create or replace view tmp(id, nazwa, nip, adres, zalega, punkty) as
select * from klient
create or replace trigger tmp_trg
instead of insert
on tmp
for each row
begin
end;
视图已创建。 然后,当我想要声明此触发器时,sql开发人员返回错误:
错误(8,1):PLS-00103:在期望以下其中一项时遇到符号“END”:begin case声明goto的退出if循环mod null pragma raise return select update while with '一个标识符' '双引号分隔标识符' '绑定变量' <<关闭当前删除获取锁定插入打开回滚保存点设置sql执行提交forall合并管道
I've created an "instead of" trigger for a simple view that only does select * on a table and a trigger that does nothing (I wanted to minimize the problem):
create or replace view tmp(id, nazwa, nip, adres, zalega, punkty) as
select * from klient
create or replace trigger tmp_trg
instead of insert
on tmp
for each row
begin
end;
The view is created.
Then when I want do declare this trigger sql developer returns error:
Error(8,1): PLS-00103: Encountered the symbol "END" when expecting one of the following: begin case declare exit for goto if loop mod null pragma raise return select update while with 'an identifier' 'a double-quoted delimited-identifier' 'a bind variable' << close current delete fetch lock insert open rollback savepoint set sql execute commit forall merge pipe
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
只需添加“null;”在开始和结束之间。
just add "null;" between the begin and the end.
我不确定我是否理解为什么你需要一个触发器,如果它什么都不做?
要回答,触发器代码块中没有有效的 PL/SQL 语句,请添加
NULL
使其成为有效块并且不执行任何操作。I'm not sure I understand why you need a trigger if it does nothing ?
To answer, there isn't a valid PL/SQL statement in your trigger code block, add a
NULL
to make it a valid block and have no action.