MySQL触发器

触发器

先来个实际的案例

触发器概述

和存储过程一样,都是嵌入在MySQL服务器中的一段程序

触发器由事件触发,比如INSERT ,UPDATE 等用户的动作或触发某项行为,自动激发触发器执行相关操作

触发器的创建

语法格式:

CREATE TRIGGER 触发器名字
{before | after}{UPDATE | INSERT | DELETE} ON 表名
FOR EACH ROW
触发器执行的语句;
  • 表名:表示触发器监控的对象
  • before | after:表示触发器和事件触发的时间
  • UPDATE | INSERT | DELETE:监视表的事件的更新,插入,删除
  • 触发器执行的语句:可以是可以单条也可以是由BGEIN...END 构成的复杂语句
#创建触发器before_tri,在给test_tri输入数据之前,向test_tri_log中加入before_insert的日志信息
                           表一                  表二
delimiter $

CREATE TRIGGER before_tri#触发器名字
before INSERT ON test_tri#监视的表名
FOR EACH ROW

BEGIN
     insert into test_tri_log(t_log)#触发器语句:在表一输入数据前,先在表二中添加'before insert...'信息
     values ('before insert...');
END $

delimiter ;

注:

  1. 监视表中的信息在begin...end中使用时,如果是insert:则是NEW.字段
  2. 抛错误 \ 异常:SIGNAL SQLSTATE '错误码' SET MESSAGE_TEXT = '错误的原因'(自己定义)

查看和删除触发器

查看触发器

方式一:

SHOW TRIGGERS\G#当前数据库下的触发器
#\G的问题是老问题了

方式二:

SHOW CREATE TRIGGER 触发器名字;#指定触发器

方式三:

SELECT *FROM information_schema.TRIGGERS;
#所有数据库下的触发器

删除触发器

DROP TRIGGER IF EXISTS 触发器名;

触发器的优缺点

  • 优点

确保数据的完整性

可以帮助记录操作的日志

在操作数据前,可以对数据进行合法性检查

  • 缺点

最大的问题就是可读性差

相关数据的更新,可能会出现错误

  • 注意点:

posted @ 2022-03-21 21:36  T,a,o  阅读(115)  评论(0编辑  收藏  举报