ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
触发器是与表有关的数据库对象,在满足定义的条件时触发,执行触发器中定义的sql语句集合。触发器可以协助应用在数据库服务器上以确保数据的完整性。 **应用场景:** 假设有【用户表】和【日志表】,业务需求是创建用户角色时,需要在日志表中新增对应的操作日志。此时,如果不适用触发器时,则需要定义方法用代码来实现(涉及多张表,为确保数据的一致性,建议用事务)。如果定义了触发器,当执行创建用户角色的代码时,会自动调用触发器向日志表插入日志信息。 ``` mysql> DELIMITER || mysql> CREATE TRIGGER demo AFTER DELETE //创建触发器,名称为demo,在删除事件之后执行 -> ON users FOR EACH ROW //FOR EACH ROW表示任何一条记录上的操作满足触发条件都会触发该触发器 -> BEGIN -> INSERT INTO logs VALUES(NOW()); -> INSERT INTO logs VALUES(NOW()); -> END -> || Query OK, 0 rows affected (0.06 sec) mysql> DELIMITER ; ``` **总结:** 触发器是一种特殊的存储过程,它在插入,删除或修改表中的数据时触发执行,它比数据库本身标准的功能有更精细和更复杂的数据控制能力。 触发器是基于行触发的,因此过于复杂的触发器会对数据造成比较严重的影响,也会导致可移植性差的后果。