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
庭院深深深几许?杨柳堆烟,帘幕无重数。
玉勒雕鞍游冶处,楼高不见章台路。
雨横风狂三月暮。门掩黄昏,无计留春住。
泪眼问花花不语,乱红飞过秋千去。
如果感觉对您有帮助
欢迎向作者提供捐赠
这将是创作的最大动力