mysql - 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 ;
解决方案
试试这个
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 中没有错误
推荐阅读
- php - 从 JSON PHP 中获取价值
- r - KDE 到包络散点图失败 - 在为函数“as.matrix”选择方法时评估参数“x”时出错:未使用的参数(-level)
- flutter - IconButtons 占用太多空间
- python - 列出组合框中的数据框/属性行
- c++ - VCPKG_ROOT 未为 CMake 定义
- database - 不小心执行了 drop all trigger 命令
- javascript - 如何创建两个独立的树 mxCompactTreeLayout?
- email - Mailgun.Attachment 不是构造函数
- reactjs - 位 - 组件没有定义构建任务
- c++ - 无法使用 CMake 构建 my-sql-connector-c++