创建触发器时,报错“ora-04091:函数/触发器 不可读”

SQL>create or replace trigger tri_row

   2   after delete on student2

   3   for each row

   4   declare

   5   v3     number;

   6   begin

   7   select count(*)  into  v3  from student2;

   8   end;

   9   /

删除表student2的内容,点燃触发器

    SQL> delete from student2 where id=11;

     Error: ora-04901: student2,触发器/函数 不可读

 

【原因】

        触发器所依附的那张表为“动态表”(即此处的student2),我们在上面创建触发器。

       “动态表”有一些限制,不允许触发器的主体对“动态表”进行查询或修改。但是,这种限制之应用于行级触发器。

        在本例中,我们对动态表student2进行了查询。

【解决方法】

      方法一:去掉对“动态表”进行查询/修改语句

                  去掉“select count(*)  into  v3  from student2”

      方法二:把触发器由行级触发器改成语句级触发器

                  去掉“for each row”

 

 

          

转载于:https://www.cnblogs.com/skl99/archive/2009/05/14/1456972.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值