创建和使用触发器

触发器

希望某条语句(或某些语句)、存储过程在事件发生时自动执行
注意只有表才支持触发器,视图和临时表不支持
例如:

  • 增加顾客信息到表中时检查其电话号码格式是否正确
  • 订购产品时,库存数量减去订购数量
  • 无论何时删除一行,都在某个存档表中保留一个副本

需要在某额表发生更改时自动处理,此为触发器。
触发器是MySQL响应以下语句而自动执行的一条SQL或存储过程

  • DELETE
  • INSERT
  • UPDATE

创建触发器

使用CREATE TRIGGER创建,创建触发器需要明确4点信息:

  • 唯一的触发器名
  • 触发器关联的表
  • 触发器响应的活动(DELETE、INSERT、UPDATE)
  • 触发器何时执行
CREATE TRIGGER newproduct AFTER INSERT ON products FOR EACH ROW
SELECT
	"Product added" INTO @newproduct;

此触发器将在INSERT语句成功执行后执行。文本productadded将对每个插入的行显示一次。
image.png

注意

每个表的每个事件只允许一个触发器。每个表最多支持6个触发器(INSET、UPDATE、DELETE)。
单一触发器不能与多个事件或多个表关联,如果

触发器失败

如果BEFORE触发器失败,则MySQL将不执行请求的操作。
BEFORE触发器或语句本身失败,MySQL将不执行AFTER触发器

删除触发器

触发器不能更新或覆盖,如果修改一个触发器必须要删除后再重新创建

DROP TRIGGER newproduct;

image.png

使用触发器

INSERT触发器


这个家伙很懒,啥也没有留下😋