首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >为什么DBA不让给MySQL数据库中加触发器呢?

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

作者头像
袁新栋-jeff.yuan
发布于 2020-08-26 17:29:43
发布于 2020-08-26 17:29:43
1.1K0
举报

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

代码语言:javascript
复制
   `update_time` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',

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

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

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

代码语言:javascript
复制
 //获取当前时间戳
  Timestamp timestamp = new Timestamp(System.currentTimeMillis()); 

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

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019/09/22 ,如有侵权请联系 cloudcommunity@tencent.com 删除
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档