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;
Original: https://www.cnblogs.com/Kuju/p/16173951.html
Author: 酷酷的sinan
Title: Mysql 触发器
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/599238/
转载文章受原作者版权保护。转载请注明原作者出处!