对oracle 触发器的一些见解

前些日子在某国企做数据库的时候被告知他们的oracle数据库里面不建议用trigger,说了一大堆理由,概括一下就是不稳定,可靠性低。

我一时间想不明白,既然Oracle这么顶级的数据库,如此成熟的产品,如果触发器不可靠的话早就该舍弃掉换做其他方式替代了。

今天我修改数据库表结构的时候终于发现了这个问题。

  我有两张表A和B,A有一个触发器,作用是插入A表之前做一些操作然后把数据出发到B。

  由于B被同事清空掉了,所以要把表B的数据重新填充进去。

  我先将A表的名字改为 COPYA,随后将A删掉,然后重新新建A,重新编译一下TRIGER,再将COPYA的数据复制到新建的A中,结果触发器不执行。

仔细分析,记得以前删表的时候触发器都是要跟随表直接被删掉的,而刚才的操作TRIGER并没有删掉,而且我又把它重新编译了一次,它的名字虽然是TRG_A,但它亲爹只有一个,是否是之前改过名字的COPYA,而不是新建的这个A呢,经过验证,果然不出所料。

这下好办了,删掉TRIGER,重新建立,成功。


今天才明白那些国企里面的人觉得触发器不可靠原因可能就在这里,因为我发现他们经常要修改表结构,而且数据库里面的数据存放挺乱的,老师傅一走派新人来他们看着文档做连一丁点的头绪都没有。当然这是我的个人意见,才疏学浅可能有疏漏之处,如果有明白的人还请不吝赐教。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值