为什么DBA不让给MySQL数据库中加触发器呢?

时间:2022-07-23
本文章向大家介绍为什么DBA不让给MySQL数据库中加触发器呢?,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

在一次迭代的时候,我给数据库中增加了两个时间字段:

   `update_time` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',

当时是紧急发布在leader的劝说下DBA 允许先上了,DBA当时就提了下个迭代给撤掉。 为什么DBA不让给数据库加触发器呢?

触发器功能强大,轻松可靠地实现许多复杂的功能,为什么又要慎用呢。触发器本身没有过错,但由于我们的滥用会造成数据库及应用程序的维护困难。在数据库操作中,我们可以通过关系、触发器、存储过程、应用程序等来实现数据操作…… 同时规则、约束、缺省值也是保证数据完整性的重要保障。如果我们对触发器过分的依赖,势必影响数据库的结构,同时增加了维护的复杂程度。 还有就是个人看法触发器在MySQL服务器执行的效果和在业务i代码中执行的性能浪费相对来说在业务代码比较少吧。

还有就是在去掉触发器的过程中也遇到问题: 那就是Jooq 到底还generate吗? 于是就试了下,其实在不改变参数类型字段大小的时候是不用再去自动生成的,然后在业务逻辑上增加了时间的处理逻辑。

 //获取当前时间戳
  Timestamp timestamp = new Timestamp(System.currentTimeMillis()); 

还有需要注意的是: 去除触发器的时候一定不要去更改字段类型或者是更改其默认值, 这样及其有可能出现数据库出现字段类型异常等问题。