1、了解什么是触发器?
mysql 的触发器和存储过程一样,都是嵌入到mysql的一段程序,触发器 是由事件触发某个动作,这些事件包括,插入 ,更新、删除等语句。如果定义了触发程序,触发器就会触发执行相应的操作。
触发器( trigger)是个特殊的存储过程,不同的是,执行存储过程要使用CALL语句来调用,而触发器的执行不需要使用CALL语句来调用,也不需要手工启动,只要当一个预定义的事件发生的时候,就会被 MYSQL自动调用。比如当对 fruits表进行操作( INSERT、 DELETE或 UPDATE)时就会激活它执行。触发器可以查询其他表,而且可以包含复杂的SQL语句。它们主要用于满足复杂的业务规则或要求。例如:可以根据客户当前的账户状态,控制是否允许插入新订单。本节将介绍如何创建触
发器。
2、查看触发器
show TRIGGERs;
3、删除触发器
drop trigger num_sum;
4、创建触发器
下面用一个案例讲解
4.1、创建业务统计表
CREATE TABLE `persons` (
`name` varchar(40) NOT NULL,
`num` int(11) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='业务统计表';
4.2、创建销售表
CREATE TABLE `sales` (
`name` varchar(40) NOT NULL,
`sum` int(11) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='销售额表';
4.3、创建一个触发器
CREATE TRIGGER num_sum AFTER INSERT on persons
for EACH ROW INSERT INTO sales VALUES(NEW.name,7*NEW.num);
4.4、向person表中插入记录
INSERT into persons VALUES('zhangsan',20),('laidefa',24);
4.5、查询persons表 和sales表
SELECT * from persons;
SELECT * from sales;
name num
zhangsan 20
laidefa 24
name sum
zhangsan 140
laidefa 168
从执行的结果来看,在persons表插入数据之后,num_sum触发器,把数据同时插入 到sales 表
5.总结
5.1、使用触发器时需要特别注意,对于相同的表 和相同的事件,只能创建一个触发器。
5.2、及时删除不再需要的触发器.