为什么不建议项目中使用触发器


1.什么是触发器

触发器(trigger)是一种数据库对象,可以看作由事件来触发的特殊存储过程。当一个特定的事件发生时,会自动执行在数据库表上的某些操作,比如当对一个表进行操作(insert,delete, update)时就会激活它执行,使得数据库其他数据发生变化。

触发器可以提高性能,这是其主要的优势,因为他是预编译的,而且省掉了和数据库建立连接和通讯的成本,因为触发器是一种特殊的存储过程,因此触发器开发相比程序开发更加灵活,简单。

1.1.查看 Oracle 数据库中已经定义的触发
SQL> SELECT * FROM USER_TRIGGERS;

1.2.查看触发器的详细定义
SQL> SELECT TEXT
  2    FROM USER_SOURCE
  3   WHERE TYPE = 'TRIGGER'
  4     AND NAME = 'SYSCONFIG_INSERT_TRIGGER'
  5  ;
 
TEXT
--------------------------------------------------------------------------------
TRIGGER "HBSMS20180522"."SYSCONFIG_INSERT_TRIGGER"
  Before insert on sysconfigen
  For each row
declare
Begin
  :NEW.createdt := sysdate;
End;
2.为什么不建议使用触发器

任何技术都是有利有弊,综合比较,我认为使用触发器要看适用的场景,对于一些小项目来说,使用触发器可以很快实现一些需求,减少开发成本。但是对于大多数项目来说, 我并不建议使用触发器

2.1.隐藏问题

对于开发人员来说,最好的设计文档就是程序代码, 读代码也是开发人员了解软件系统的最直接方式,  当程序代码无法告知开发人员系统正在发生哪些事情时,开发人员就很难通过问题现象定位问题点

2.2.不易维护

从开发人员角度分析:使用触发器势必将业务逻辑分散,如果业务逻辑一部分在程序代码,一部分在数据库中。增加了开发管理的难度。当开发人员多次变更后,开发维护都可能上升为灾难,

从数据库管理员角度分析: 运维升级的人员如果没有全面了解相关触发器,可能会出现运维障碍。当数据库需要迁移或者割接时会十分困难

文章总结

大型、高并发的应用,数据库越简单约好。业务功能都建议使用程序替代数据库触发器,让系统功能更加明确

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

=PNZ=BeijingL

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值