Mysql 触发器
Mysql触发器
1、1 触发器定义
触发器是由事件来触发某个操作, 事件包括 insert update delete事件,
优势:
- 保证数据完整性。
- 触发器可以帮助记录操作日志
- 触发器可以用在操作数据前,对数据进行合法性检测
劣势:
- 可读性差。由于触发器是由事件驱动,不受应用层控制。对系统维护不友好
- 相关数据表结构的变更,有可能会导致触发器错误。
1、2 触发器使用
-
创建触发器
# 触发器创建语法 CREATE TRIGGER name {BEFORE|AFTER} {INSERT|UPDATE|DELETE} ON 表名 FOR EACH ROW 触发执行的语句块 #错误程序 固定格式 SIGNAL SQLSTATE "错误码" SET MESSAGE_TEXT = '错误信息' # 举例 DELIMITER // CREATE TRIGGER trigger_insert_live AFTER INSERT ON nlsg_live FOR EACH ROW BEGIN # 自定义错误流程判断 IF NEW.id > 10 THEN SIGNAL SQLSTATE "HY001" SET MESSAGE_TEXT = 'error id > 10'; #自定义校验 END IF; INSERT INTO nlsg_live_info(live_pid) VALUE(NEW.id); #NEW 为当前insert 数据对象 END // DELIMITER ;
说明:
-
BEFORE|AFTER 表示事件触发时间。BEFORE在事件之前触发 AFTER在事件之后触发。
-
表名 :表示触发器监控对象。
-
{INSERT|UPDATE|DELETE} : 表示触发事件。
-
语句块 : 可以是单条 也可以是由BEGIN...END 结构组合的复合语句。
- 自定义错误程序: SIGNAL SQLSTATE "错误码" SET MESSAGE_TEXT = '错误信息';
- NEW : 关键字new为触发事件(insert|update)数据的对象。
- OLD : 关键字 为delete事件数据的对象 OLD值因为是删除操作,所以全部是只读的。
-
-
查看触发器
#方式一 查看当前数据库触发器信息 SHOW TRIGGERS; #方式二 查看当前数据库某个触发器信息 SHOW CREATE TRIGGER trigger_name; #方式三 查看系统库所有的触发器信息 select * from information_schema.TRIGGERS;
-
删除触发器
#方式一 DROP TRIGGER trigger_name; #方式二。 检索后删除 推荐使用 DROP TRIGGER IF EXISTS trigger_name;
本文来自博客园,作者:Fang思楠,转载请注明原文链接:https://www.cnblogs.com/Kuju/p/16173951.html