MySQL 行级触发器
MySQL触发器是一种在数据库中自动执行的特殊存储过程,它会在特定事件(如插入、更新或删除)发生时触发。行级触发器是触发器的一种,它会在每一行数据受到影响时执行。本文将详细介绍MySQL行级触发器的概念、语法及其实际应用。
什么是行级触发器?
行级触发器是一种在数据库中针对每一行数据执行操作的触发器。与语句级触发器不同,行级触发器会在每一行数据受到影响时触发,而不是在整个SQL语句执行完毕后触发。这使得行级触发器在处理每一行数据时更加灵活和精确。
行级触发器的语法
在MySQL中,创建行级触发器的基本语法如下:
CREATE TRIGGER trigger_name
BEFORE|AFTER INSERT|UPDATE|DELETE
ON table_name FOR EACH ROW
BEGIN
-- 触发器逻辑
END;
trigger_name
:触发器的名称。BEFORE|AFTER
:指定触发器在事件之前或之后执行。INSERT|UPDATE|DELETE
:指定触发器在插入、更新或删除操作时触发。table_name
:触发器所属的表名。FOR EACH ROW
:指定触发器为行级触发器。BEGIN...END
:触发器的主体,包含触发器的逻辑。
行级触发器的实际应用
示例1:自动更新库存
假设我们有一个商品表 products
和一个库存表 inventory
。每当有新的商品插入到 products
表中时,我们希望自动在 inventory
表中插入一条库存记录。
CREATE TRIGGER update_inventory
AFTER INSERT ON products
FOR EACH ROW
BEGIN
INSERT INTO inventory (product_id, quantity)
VALUES (NEW.id, 0);
END;
在这个例子中,NEW.id
表示新插入的商品的ID。触发器会在每次插入新商品时自动执行,将新商品的ID和初始库存量(0)插入到 inventory
表中。