CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Oracle >  开发

关于触发器的问题(变异表)

楼主maxwellqhq()2003-09-03 15:57:00 在 Oracle / 开发 提问

触发器查询其自己的触发表(该表为变异表),导致有错误发生"Table   nn   is   mutating,trigger/function   may   not   see   it."  
  于是我采用两个触发器来解决:一个行触发器(不带查询),一个语句触发器,和一个包(PAKAGE)来保存更新的值。  
  由于我不清楚是否有容器能同时放包和两个触发器,所以我在包里建了这个包,在触发器里建了这两个触发器。  
  但是在更新表时,触发器出错:“existing   state   of   packages   has   been   discarded.”  
  请问发生了什么错误,如何解决??或者是否有其他方法解决变异表错误?? 问题点数:50、回复次数:5Top

1 楼beckhambobo(beckham)回复于 2003-09-03 16:16:47 得分 20

所以我在包里建了这个包,在触发器里建了这两个触发器??  
  怎样做法,能否把代码也写出来Top

2 楼maxwellqhq()回复于 2003-09-04 16:47:02 得分 0

TO   bechhambobo  
  其实问题是这样的:  
        假设一个触发器是针对表A变动而能使得表B也发生相应的变动。则在触发器体内一定是一些对表B进行的执行语句。  
        我现在的问题是这些执行语句涉及到查询表A的记录数据,这样的话会产生“mutating”、  
  (变异)而发生错误。  
        我现在没办法解决这个问题,因为我必须还要返回来查询表A里面其他的数据,然后结合表A里新增的数据(或删除)一起再做些动作。  
        请问有什么想法和解决办法吗?  
        非常感谢!!!!!Top

3 楼beckhambobo(beckham)回复于 2003-09-04 19:00:45 得分 0

create   trigger   a_tri  
  before   insert   or   update   on   a  
  for   each   row  
  declare  
  cursor   t_sor   is  
  select   ...   from   a;  
  begin  
  for   v_sor   in   t_sor   loop  
  ...  
  end   loop;  
  update   b   set=...   where   id=:new.id;  
  end;  
  /Top

4 楼BlueskyWide(谈趣者)回复于 2003-09-04 19:25:00 得分 30

"我现在的问题是这些执行语句涉及到查询表A的记录数据,这样的话会产生mutating",  
   
  是的,无论如何要避免针对A表的变动再去"查询A表",即不要再出现A表的名字,  
  但可以用其它方法引用A表中的字段,如使用decode等.Top

5 楼maxwellqhq()回复于 2003-09-05 10:58:14 得分 0

TO   BlueskyWide:  
   
  "但可以用其它方法引用A表中的字段,如使用decode等"  
   
  decode是怎么使用的?你能说详细点吗?我没接触过。其他的一些方法你帮我介绍一下好吗,谢谢!!!!Top

相关问题

  • 触发器在update表时提示表变异,怎么回事?
  • 表层触发器
  • 表的触发器
  • 触发器inserted表的问题
  • 触发器中的临时表
  • 触发器生成新表的问题
  • 触发器中Inserted表的行数?
  • 在触发器中创建表问题!
  • 触发器多表更新问题
  • 出库表的触发器如何写?

关键词

  • 查询
  • 语句
  • 解决
  • 数据
  • 执行
  • 触发器
  • 变异
  • mutating
  • sor
  • 错误

得分解答快速导航

  • 帖主:maxwellqhq
  • beckhambobo
  • BlueskyWide

相关链接

  • Oracle类图书

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo