+ -
当前位置:首页 → 问答吧 → ORACLE触发器问题

ORACLE触发器问题

时间:2011-10-18

来源:互联网

在ORACLE中有张A表,A表上创建了一个行级INSERT触发器,在数据插入A表的时候,把数据处理,并插入B表中,并且需要删除A表中刚插入的这条数据,或者在数据处理完后,不让这条数据插入A表,但不要用抛出异常的方式,触发器代码怎么写?

作者: xiuqicaiaci   发布时间: 2011-10-18

你直接往 B 表插入不就完了,搞什么触发器

作者: opps_zhou   发布时间: 2011-10-18

这个需求就有问题!为什么非得用触发器呢,搞得这么麻烦!
过程就可以实现!
我之前就做过类似这样的!

作者: ckdmff101429   发布时间: 2011-10-18

现在在做ORACLE的移植,之前的数据库是SQLSERVER,在SQLSERVER中已经是这样做的了,而且这样做也有这样做的原因,现在已经不可能再去修改源码,只能按照原来的方式去处理,求解,顶!

作者: xiuqicaiaci   发布时间: 2011-10-18

建立一个包变量(索引表),存储a表的主键id
行级触发器里面每次插入要向包变量里面存入a表的主键。
再建立一个表级触发器,在表级触发器里面根据包变量里面a表的主键id查询出相应内容并且经过处理后放入b表。最后再根据这个主键id删除掉原a表的数据。
要记得表级触发器的最后要将包变量清空。

作者: renfengjun   发布时间: 2011-10-18

有主键,应该好办,没有主键的话,可以建另一个和A结构一样的表C,通过这个表插入到B中,然后truncate掉C表(个人意见)

作者: yrg00000   发布时间: 2011-10-19

照表A建一个一样的视图,建instead of 触发器

作者: forgetsam   发布时间: 2011-10-19

或者B上建一个after insert 触发器 里面根据:new.id 删除A里面的数据

并发会比较惨

但是SQLServer做的系统,就当没并发吧。

作者: forgetsam   发布时间: 2011-10-19

引用 6 楼 forgetsam 的回复:
照表A建一个一样的视图,建instead of 触发器

支持,建议使用视图触发器来解决这个问题,把原来的表A改名吧。

作者: xiaobn_cn   发布时间: 2011-10-19

热门下载

更多