设万维读者为首页 万维读者网 -- 全球华人的精神家园 广告服务 联系我们 关于万维
 
首  页 新  闻 视  频 博  客 论  坛 分类广告 购  物
搜索>> 发表日志 控制面板 个人相册 给我留言
帮助 退出
江南风的博客  
江南风的博客  
https://blog.creaders.net/u/3799/ > 复制 > 收藏本页
网络日志正文
Trigger: the mutating table error ORA-04091 2010-05-12 08:39:15
I got "the mutating table error ORA-04091" when I tested one of my triggers. This is because I queried the table that fires the trigger.

Here's the example, which involves 3 tables, table1 (columns: report_id, process_id,...), table2 (columns: process_id, organisation, ...), and table3 (columns: organisation, bu, ...).

create or replace trigger ci_updated_trig

  AFTER UPDATE  OF UPDATE_DTTM
  ON TABLE1
  FOR EACH ROW
DECLARE
  -- local variables here
  v_exist  NUMBER;
  v_is_wanted_ci NUMBER;
BEGIN
  -- check if this is wanted record
  SELECT COUNT(*) INTO v_is_wanted_ci
    FROM table1 t1, table2 t2, table3 t3
   WHERE t1.report_id = :new.report_id AND t1.process_id = t2.process_id AND
         t2.organisation = t3.organisation AND t3.bu='ES';

   ...... ......        
END ;

If should be corrected into the following:

create or replace trigger ci_updated_trig
  AFTER UPDATE  OF UPDATE_DTTM
  ON TABLE1
  FOR EACH ROW
DECLARE
  -- local variables here
  v_exist  NUMBER;
  v_is_wanted_ci NUMBER;
BEGIN
  -- check if this is wanted record
  SELECT COUNT(*) INTO v_is_wanted_ci
    FROM table2 t2, table3 t3
   WHERE t2.process_id = :new.process_id AND
         t2.organisation = t3.organisation AND t3.bu='ES';

   ...... ......        
END ;


浏览(586) (0) 评论(0)
发表评论
我的名片
江南风
注册日期: 2010-05-12
访问总量: 4,560 次
点击查看我的个人资料
Calendar
最新发布
· ORA-06553: PLS-382: expression
· Trigger: the mutating table er
分类目录
【报税点滴】
【Database Tips】
· ORA-06553: PLS-382: expression
· Trigger: the mutating table er
存档目录
2010-05-12 - 2010-05-13
 
关于本站 | 广告服务 | 联系我们 | 招聘信息 | 网站导航 | 隐私保护
Copyright (C) 1998-2024. Creaders.NET. All Rights Reserved.