免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12
最近访问板块 发新帖
楼主: kasyunn
打印 上一主题 下一主题

trigger问题求助  [复制链接]

论坛徽章:
0
11 [报告]
发表于 2003-04-04 12:20 |只看该作者

trigger问题求助 

原帖由 "nyfor" 发表:


really ?

NO!!

您能用您的方法解决一下最上面的问题吗?请教!!

论坛徽章:
0
12 [报告]
发表于 2003-04-04 12:26 |只看该作者

trigger问题求助 

还是nyfor说得对,我的方法太复杂了
谢谢nyfor

论坛徽章:
0
13 [报告]
发表于 2003-04-04 12:28 |只看该作者

trigger问题求助 

原帖由 "kasyunn" 发表:
下面是一个oracle的trigger,创建的时候没有问题,但是update操作的时候,
出现ORA-04091错误,也就是对行触发器来讲,对当前正在改变的表不允许做select操作,但是如果不用行触发器的话,无法知道当前改变的列的值?.........


原始要求是什么?

论坛徽章:
0
14 [报告]
发表于 2003-04-04 12:40 |只看该作者

trigger问题求助 

原帖由 "kasyunn" 发表:
下面是一个oracle的trigger,创建的时候没有问题,但是update操作的时候,
出现ORA-04091错误,也就是对行触发器来讲,对当前正在改变的表不允许做select操作,但是如果不用行触发器的话,无法知道当前改变的列的值?.........

上面问题中要把 FOR EACH ROW去掉后
就不能引用:OLD和:NEW了

论坛徽章:
0
15 [报告]
发表于 2003-04-04 12:53 |只看该作者

trigger问题求助 

原帖由 "OL.O" 发表:
还是nyfor说得对,我的方法太复杂了
谢谢nyfor

我刚才做了一下测试,也不一定对,去掉FOR EACH ROW后
不能引用:OLD和:NEW,那最上面的那个触发器就不能编译成功。


还是要谢谢nyfor

论坛徽章:
0
16 [报告]
发表于 2003-04-04 13:35 |只看该作者

trigger问题求助 

谢谢.
看来还是得增加一个临时表.

这样应该可以解决了.

论坛徽章:
0
17 [报告]
发表于 2003-04-04 15:35 |只看该作者

trigger问题求助 

那还不如建立一个view使用instead of 触发器。

论坛徽章:
0
18 [报告]
发表于 2003-04-04 15:43 |只看该作者

trigger问题求助 

名前?你是帮日本人开发啊?小弟也在学日语,多多指教啊!

论坛徽章:
0
19 [报告]
发表于 2003-04-05 13:13 |只看该作者

trigger问题求助 

经过一番折腾后我想了一个简单而又有效的办法,只用一个语句级触发器就可搞定
CREATE OR REPLACE TRIGGER TRIGGER_PING_MONITOR
AFTER DELETE OR INSERT OR UPDATE OF RecordStatus ON PINGMONITOR_ADMIN
BEGIN
INSERT INTO NODE_ADMIN  SELECT  B.PingMonitorID,1 FROM NODE_ADMIN A,PINGMONITOR_ADMIN B WHERE A.NODEID(+)=B.PingMonitorID AND B.RecordStatus=0 AND A.NODEID IS NULL;
--当插入一个在NODE_ADMIN里没有的行时的处理,如果有相应的行在NODE_ADMIN就无行被插入
UPDATE NODE_ADMIN A SET PINGMONITOR=(SELECT DECODE(COUNT(*),0,0,1) FROM PINGMONITOR_ADMIN B WHERE A.NODEID=B.PingMonitorID AND B.RecordStatus=0);
END TRIGGER_PING_MONITOR;
--每次事务都对NODE_ADMIN进行一次刷新,这样就不存在一致性问题了,前面我的答复虽然也可完成相应的功能,但还要有很多加工,这个就不必改太多了


多谢nyfor的指点
/

论坛徽章:
0
20 [报告]
发表于 2003-04-07 14:19 |只看该作者

trigger问题求助 

谢谢OL.O和nyfor.
的确可行.


TO:billsh01
是在日本人开发.一起学习吧.
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP