触发器基本语法

  1. 生成一个触发器

    1
    2
    3
    CREATE TRIGGER 触发器名 触发事件(BEFORE|AFTER INSERT|UPDATE|DELETE)
    ON 表名 FOR EACH ROW
    触发器激活后需要执行的语句

    一些注意事项

    • 同一个数据库中不能创建同名触发器
    • 在同一张表中不能出现触发条件相同的触发器
    • 使用NEWOLD来获取数据变化前后的记录值
    • 如果激活后只有一条操作,可以直接写,如果需要复杂操作则需要使用BEGIN...END;语句包围
  2. 查看触发器

    1
    SHOW TRIGGERS ;
  3. 删除触发器

    1
    DROP TRIGGER 触发器名; 
  4. 修改触发器

    将已有触发器删除后再重新创建😂

一个简单的触发器示例

1
2
3
4
5
6
7
8
9
10
CREATE TRIGGER update_userinfo_trigger 
AFTER UPDATE ON user
FOR EACH ROW
BEGIN
IF NEW.user_name <> OLD.user_name THEN
UPDATE task_my SET user_name = NEW.user_name WHERE user_id = NEW.id;
UPDATE table1 SET user_name = NEW.user_name WHERE user_id = NEW.id;
UPDATE table2 SET user_name = NEW.user_name WHERE user_id = NEW.id;
END IF;
END;

该触发器实现了,在更新user表中的name时,可以同时联动着将其他表中的name也更新掉,实现用户数据的统一