Mysql8 怎么创建多个触发器?

2021-02-24  乐帮网

mysql笔记

在MySQL 5.7.2版之后,您可以为表中的一个事件创建多个触发器,例如,为BEFORE UPDATE创建两个按顺序执行的触发器。当事件发生时,它们将按顺序激活。下面将创建两个触发器测试效果,以MySql自带的示例数据库为例:在表products上建立一个触发器

DELIMITER $$

CREATE TRIGGER TGR_products_prices
   BEFORE UPDATE ON products 
   FOR EACH ROW 
BEGIN
     IF OLD.msrp <> NEW.msrp THEN
         INSERT INTO Prices(product_code,price)
         VALUES(old.productCode,old.msrp);
     END IF;
END$$

DELIMITER ;

在表 products上建立第二个触发器如下:

DELIMITER $$

CREATE TRIGGER TGR_products_user
   BEFORE UPDATE ON products 
   FOR EACH ROW 
   FOLLOWS before_products_update
BEGIN
    IF OLD.msrp <> NEW.msrp THEN
        INSERT INTO UserChangeLogs(productCode,updatedBy)
        VALUES(OLD.productCode,USER());
    END IF;
END$$

DELIMITER ;

现在表products中有两个触发器TGR_products_prices和TGR_products_user。它们都能正常工作,如果我更新表products表中msrp 字段,这两个触发器都会执行,而且TGR_products_prices会先执行,然后TGR_products_user再执行。

那我们如何查看触发器以及它的执行顺序呢?查看触发器具体的定义可以通过以下语句:

SHOW TRIGGERS 
FROM employees
WHERE `table` = 'products';

如果想查看它的执行顺序可以以下语句查询出来:

SELECT  trigger_name, action_order
 FROM information_schema.triggers
WHERE
    trigger_schema = 'employees'
ORDER BY 
    event_object_table , 
    action_timing , 
    event_manipulation;

以上就是今天分享的内容。来自lebang2020.cn

公众号二维码

关注我的微信公众号
在公众号里留言交流
投稿邮箱:1052839972@qq.com

庭院深深深几许?杨柳堆烟,帘幕无重数。
玉勒雕鞍游冶处,楼高不见章台路。
雨横风狂三月暮。门掩黄昏,无计留春住。
泪眼问花花不语,乱红飞过秋千去。

欧阳修

付款二维码

如果感觉对您有帮助
欢迎向作者提供捐赠
这将是创作的最大动力