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 ;
注:
- 监视表中的信息在begin...end中使用时,如果是insert:则是NEW.字段;
- 抛错误 \ 异常:SIGNAL SQLSTATE '错误码' SET MESSAGE_TEXT = '错误的原因'(自己定义)
查看和删除触发器
查看触发器
方式一:
SHOW TRIGGERS\G#当前数据库下的触发器
#\G的问题是老问题了
方式二:
SHOW CREATE TRIGGER 触发器名字;#指定触发器
方式三:
SELECT *FROM information_schema.TRIGGERS;
#所有数据库下的触发器
删除触发器
DROP TRIGGER IF EXISTS 触发器名;
触发器的优缺点
- 优点
确保数据的完整性
可以帮助记录操作的日志
在操作数据前,可以对数据进行合法性检查
- 缺点
最大的问题就是可读性差
相关数据的更新,可能会出现错误
- 注意点: