MySQL触发器

什么是触发器

触发器(trigger)是MySQL提供给程序员和数据分析员来保证数据完整性的一种方法,它是与表事件相关的特殊的存储过程,它的执行不是由程序调用,也不是手工启动,而是由事件来触发,比如当对一个表进行操作(insert,delete, update)时就会激活它执行。简单理解为:你执行一条sql语句,这条sql语句的执行会自动去触发执行其他的sql语句。

触发器详细介绍

触发器创建四要素

  • 监视地点(table)
  • 监视事件(insert、update、delete)
  • 触发时间(after、before)
  • 触发事件(insert、update、delete)

触发器使用语法

1
2
3
4
5
6
CREATE TRIGGER 触发器名
BEFORE|AFTER DELETE|INSERT|UPDATE
ON 表名 FOR EACH ROW
BEGIN
触发SQL代码块;
END;

before/after: 触发器是在增删改之前执行,还是之后执行
delete/insert/update: 触发器由哪些行为触发(增、删、改)
on 表名: 触发器监视哪张表的(增、删、改)操作
触发SQL代码块: 执行触发器包含的SQL语句

例子

比如,现在我有单价、数量、总价三个字段,众所周知,总价 = 单价 x 数量,那么我们便可以写出一个触发器如下,当我们修改单价或者数量的时候,总价自动进行计算:

1
2
3
4
5
6
CREATE TRIGGER sum
BEFORE UPDATE
ON product FOR EACH ROW
BEGIN
SET NEW.total_price = NEW.price * NEW.amount
END;

选中表->右键->设计表->触发器->添加触发器,

触发器