17 | 触发器:如何让数据修改自动触发关联操作,确保数据一致性?
如何操作触发器?
创建触发器
- 深入了解
- 翻译
- 解释
- 总结
触发器在数据库中扮演着自动触发关联操作的重要角色,确保数据一致性。本文通过实例展示了触发器的基本操作,包括创建、查看和删除触发器的语法结构和步骤。通过对比使用SQL语句和触发器记录会员储值金额变动的操作,读者可以更好地理解触发器在何种情况下比SQL语句更加简洁高效。触发器的创建需要定义表名、事件类型和触发时间,而查看和删除触发器则分别使用SHOW TRIGGERS\G和DROP TRIGGER命令。文章还介绍了触发器执行失败时的处理方式,以及如何通过ROW_COUNT()函数捕获错误。通过本文的介绍,读者可以快速了解触发器的基本操作和应用场景,为实际开发提供了有益的参考。触发器的应用可以提高效率,减少资源消耗,并确保关联操作的完整性,具有类似事务的功能。 触发器的优点包括确保数据完整性、记录操作日志和检查数据合法性,但也存在可读性差、增加系统维护成本的缺点。在使用触发器时,需要综合考量。最后,建议维护完整的数据库设计文档,以帮助新人快速了解触发器的设计思路,减少错误,降低系统维护成本。 总体而言,本文通过实例和对比分析,全面介绍了触发器的操作和应用,为读者提供了深入了解和应用触发器的指导。
《MySQL 必知必会》,新⼈⾸单¥59
全部留言(12)
- 最新
- 精选
- 朱晓峰置顶你好,我是朱晓峰,下面我就来公布一下上节课思考题的答案: 上节课,我们学习了游标。下面是思考题的答案: DELIMITER // CREATE PROCEDURE demo.myproc() BEGIN DECLARE myid INT; DECLARE myq INT; DECLARE done INT DEFAULT FALSE; DECLARE cursor_test CURSOR FOR SELECT * FROM demo.test; DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE; OPEN cursor_test; FETCH cursor_test INTO myid,myq; REPEAT IF (myid MOD 2 = 0) THEN -- 如果是偶数,加1 UPDATE demo.test SET myquant = myquant + 1 WHERE id = myid; ELSE -- 奇数加2 UPDATE demo.test SET myquant = myquant + 2 WHERE id = myid; END IF; FETCH cursor_test INTO myid,myq; UNTIL done END REPEAT; CLOSE cursor_test; END // DELIMITER ;2021-05-174
- giteebravo视图,存储过程,存储函数,触发器 这些对象都保存在数据库中 对于应用系统来说具有很大的隐蔽性 维护和管理它们还是有很高成本的
作者回复: 是的
2021-04-1812 - giteebravo请问老师, 一个完整的数据库设计文档应该包含哪些内容呢?
作者回复: 一般来说应该包括需求分析、建模(ER)、逻辑设计(比如建库建表)、物理设计(比如索引)、实施、运维(容灾和备份)等,根据实际需求,可以进一步细化
2021-04-188 - giteebravo触发器和事务的根本差别在哪呢?
作者回复: 触发器时一种由SQL操作触发的存储程序。事务是指一系列SQL操作,要么全部执行,要么全部不执行。触发器中的SQL操作可以是事务操作,也可以不是。
2021-04-182 - lesserror触发器实现的功能让我想到了web框架的模型事件。实现的也是模型更新、删除等前后需要执行的操作。 所以现在在代码层面处理这类多个表数据之间的数据一致性操作变得没有那么麻烦。 触发器最大的弊端就是隐蔽了,如果业务中大量使用了触发器,需要在编程语言和触发器语法之间来回横跳,加大了系统维护成本。
作者回复: 是的
2021-04-182 - jjn0703请教一下老师,数据库设计文档如何做的版本管理,团队协作时候,变更有的同事直接就在Navicat上操作提交了
作者回复: 建议对流程进行管控,也可以借助一些流程控制软件,辅助以公司的规章制度、培训等手段,这个问题应该可以得到解决
2022-01-281 - 流云追风大量数据更新或插入时,如果存在表上的触发器会影响性能的
作者回复: 同意
2021-09-061 - 小明针不戳老师能不能提供一个数据库设计文档给我们学习一下啊..
作者回复: 可以在网上搜一下“数据库设计文档”,有很多信息可以参考。不过在我看来,形式并不是最重要的。重要的是要把设计的细节都记录下来并且及时更新,这样才能起到作用。但是文档维护需要耗费大量时间精力,是非常有挑战性的工作。
2021-04-2521 - 静✨适用于频繁或者大批量的数据状态同步处理。还有老师说的记log和入参检查。 印象里只有一个日本的现场用到了触发器,刚开始还惊奇,现在想了一下大概是因为他们维护了所有的文档吧😂 还包含存储过程和各种视图。
作者回复: 是的
2022-06-05归属地:北京 - 彭彬Oracle的行级触发器有变异表的问题,MySQL的触发器有这个问题吗?
作者回复: 我没有发现
2021-09-22