一、触发器
1、概念相关
如果想要某条语句在事件发生时自动执行那么就要用到触发器,触发器是数据库表的属性,是一个特殊的存储过程,但是触发器不需要CALL语句调用,也不需要手动启动。它由事件触发,事件包括INSERT,UPDATE和DELETE语句
,当表中出现这些特定事件时,将激活该对象 。
除此之外的其他MySQL语句不支持触发器。
2、创建触发器
触发器创建的四个要素
- 唯一的触发器名称
- 触发器关联的表
- 触发器应该响应的活动
- 触发器何时执行
触发器创建使用CREATE TRIGGER语句
CREATE TRIGGER newproduct AFTER INSERT ON products
FOR EACH ROW SELECT 'Product added';
此时报错:Not allowed to return a result set from a trigger
解决方法:加上 into @arg,因为从MySQL5以后不支持触发器返回结果集
CREATE TRIGGER newproduct AFTER INSERT ON products
FOR EACH ROW SELECT 'Product added' into @arg;
CREATE TRIGGER
用来创建名为newproduct的触发器,触发器在一个操作发生之前或之后执行,这列给出了AFTER INSERT
,所以此触发器将在INSERT语句
成功执行后执行,这个触发器还指定FOR EACH ROW
,因此代码对插入的每行都执行。该例中,文本Product added将对每个插入的行显示一次。
触发器只在操作对象为表时才能使用,视图和临时表都不支持。
触发器按照每个表每个事件每次地定义,每个表每个时间每次只允许一个触发器。因此每个表最多