1. 触发器

触发器会把我们 添加 修改 删除 操作之前或之后 触发执行 触发器 中定义的SQL语句

这些特性可以作为 日志记录 数据校验 确保数据完整性

使用 别名 NEW 和 OLD 关键字来引用触发器 发生变化的内容记录

NEW 为触发后表的数据 为一个单行多列结果

OLD 为触发器前表的数据

OLD 是只读的,而 NEW 则可以在触发器中使用 SET 赋值,这样不会再次触发触发器,造成循环调用(如每插入一个学生前,都在其学号前加“2013”)。

07. 触发器 - 图1

  1. -- 创建触发器
  2. delimiter $
  3. create trigger 触发器名称
  4. before|after(定义操作前/后) insert|update|delete(定义触发器类型)
  5. on 表名
  6. for each row
  7. begin
  8. sql语句;
  9. -- 可以使用 NEW / OLD 关键字来获取更新前后的数据 new.name old.name
  10. end$
  11. delimiter$

样例

  1. delimiter $$
  2. CREATE TRIGGER upd_check
  3. BEFORE UPDATE ON account
  4. FOR EACH ROW
  5. BEGIN
  6.   IF NEW.amount < 0 THEN
  7.     SET NEW.amount = 0;
  8.   ELSEIF NEW.amount > 100 THEN
  9.     SET NEW.amount = 100;
  10.   END IF;
  11. END$$
  12. delimiter ;
  • 查看触发器 show triggers;
  • 删除触发器 drop trigger 触发器名称;