ORA-04079: 无效的触发器说明(急)

01Byte空间 2009-09-04 11:08:10

为什么会出现下面的问题啊


SQL> create or replace trigger record_ABC
2 before insert or update or delete
3 on ABC
4 delcare
5 l_action varchar2(30);
6 begin
7 if INSERTING then
8 l_action :='INSERT';
9 elsif UPDATING then
10 l_action :='UPDATE';
11 elsif DELETING then
12 l_action :='DELETE';
13 end if;
14 insert into ABC_log(uname,uaction)
15 values(user,l_action);
16 end record_ABC;
17 /
delcare
*
第 4 行出现错误:
ORA-04079: 无效的触发器说明




改成这样就没有错了 好像这两个是一样的啊

SQL> create or replace trigger record_ABC
2 before insert or update or delete
3 on ABC
4 begin
5 if INSERTING then
6 insert into ABC_log(uname,uaction)
7 values(user,'INSERT');
8 elsif UPDATING then
9 insert into ABC_log(uname,uaction)
10 values(user,'UPDATE');
11 elsif DELETING then
12 insert into ABC_log(uname,uaction)
13 values(user,'DELETE');
14 end if;
15 end record_ABC;
16 /

触发器已创建
...全文
2604 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
01Byte空间 2009-09-05
  • 打赏
  • 举报
回复
多谢 刘兄...
[Quote=引用 6 楼 inthirties 的回复:]
工作时细心,遇到问题时耐心
[/Quote]
01Byte空间 2009-09-04
  • 打赏
  • 举报
回复
真是什么都有啊

确实 是把declare写错了
YY_MM_DD 2009-09-04
  • 打赏
  • 举报
回复
把declare该成is/as不就行了
oracletoad 2009-09-04
  • 打赏
  • 举报
回复
[Quote=引用楼主 rookie_ceo 的回复:]
为什么会出现下面的问题啊
SQL code

SQL>createorreplacetrigger record_ABC2 beforeinsertorupdateordelete3on ABC4 delcare5 l_actionvarchar2(30);6begin7if INSERTINGthen8 l_action :='INSERT';9 elsif UPDATINGthen10 l_action :='UPDATE';11 elsif DELETINGthen12 l_action :='DELETE';13endif;14insertinto ABC_log(uname,uaction)15values(user,l_action);16end record_ABC;17/
delcare*
第4 行出现错误:
ORA-04079: 无效的触发器说明


改成这样就没有错了  好像这两个是一样的啊
SQL code
SQL>createorreplacetrigger record_ABC2 beforeinsertorupdateordelete3on ABC4begin5if INSERTINGthen6insertinto ABC_log(uname,uaction)7values(user,'INSERT');8 elsif UPDATINGthen9insertinto ABC_log(uname,uaction)10values(user,'UPDATE');11 elsif DELETINGthen12insertinto ABC_log(uname,uaction)13values(user,'DELETE');14endif;15end record_ABC;16/

触发器已创建
[/Quote]

第二个触发器少了参数定义
delcare
l_action varchar2(30);

原因就在这里啊!
liu498097420 2009-09-04
  • 打赏
  • 举报
回复
是declare,你打错了。
feng2 2009-09-04
  • 打赏
  • 举报
回复
create or replace trigger record_ABC
before insert or update or delete
on ABC for each row
delcare l_action varchar2(30);
begin
....
end;
/
inthirties 2009-09-04
  • 打赏
  • 举报
回复
工作时细心,遇到问题时耐心

17,382

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧