PHP实战中知识总结 / Mysql - 触发器

一、触发器

触发器是与表有关的数据库对象,在满足定义的条件时触发,执行触发器中定义的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 ;

三、总结

触发器是一种特殊的存储过程,它在插入,删除或修改表中的数据时触发执行,它比数据库本身标准的功能有更精细和更复杂的数据控制能力。

触发器是基于行触发的,因此过于复杂的触发器会对数据造成比较严重的影响,也会导致可移植性差的后果。

PHP实战中知识总结