首页 > 解决方案 > Mysql 触发 if 语句更新第二张表

问题描述

我正在尝试创建一个 mysql 触发器。这就是我要创建的内容,但不知何故它告诉我:“您的 SQL 语法有错误;请查看与您的 MySQL 服务器版本相对应的手册,以获取在“A FOR EACH ROW”附近使用的正确语法。

我在这里做错了什么?我试图以不同的方式命名它们,但它似乎不起作用。

delimiter //
CREATE TRIGGER stock_update BEFORE UPDATE ON `stock` A
       FOR EACH ROW
       BEGIN
           IF NEW.`quantity` < 1 THEN //belongs to alias A
               UPDATE `ps_product` B
               SET B.`visibility` = 'none';
               WHERE id_product = OLD.id_product  //Should be the id_product of A alias
           ELSEIF NEW.quantity > 0 THEN
               UPDATE `ps_product` C
               SET C.`visibility` = 'both';
               WHERE id_product = OLD.id_product //Should be the id_product of A alias
           END IF;
       END;//
delimiter ;

标签: mysqltriggers

解决方案


试试这个

delimiter //
CREATE TRIGGER stock_update BEFORE UPDATE ON `stock` 
       FOR EACH ROW
       BEGIN
           IF NEW.`quantity` < 1 THEN #belongs to alias A
               UPDATE `ps_product` B
               SET B.`visibility` = 'none'
               WHERE id_product = OLD.id_product;  #Should be the id_product of A alias
           ELSEIF NEW.quantity > 0 THEN
               UPDATE `ps_product` C
               SET C.`visibility` = 'both'
               WHERE id_product = OLD.id_product; #//Should be the id_product of A alias
           END IF;
       END;//
delimiter ;

这显示 mysql workbbench 中没有错误


推荐阅读