对oracle 触发器的一些见解

来源:互联网 发布:极客学院python视频 编辑:程序博客网 时间:2024/05/17 05:58

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

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

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

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

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

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

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

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


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

原创粉丝点击