Mysql触发器if语句更新第二个表
我正在尝试创建一个mysql触发器。这就是我试图创建的,但不知怎么的,它告诉我:“您的SQL语法有一个错误;请查看与您的MySQL服务器版本对应的手册,以了解在‘A’附近使用的正确语法 每行” 我做错了什么?我试着用不同的名字给它们命名,但似乎不起作用Mysql触发器if语句更新第二个表,mysql,triggers,Mysql,Triggers,我正在尝试创建一个mysql触发器。这就是我试图创建的,但不知怎么的,它告诉我:“您的SQL语法有一个错误;请查看与您的MySQL服务器版本对应的手册,以了解在‘A’附近使用的正确语法 每行” 我做错了什么?我试着用不同的名字给它们命名,但似乎不起作用 delimiter // CREATE TRIGGER stock_update BEFORE UPDATE ON `stock` A FOR EACH ROW BEGIN IF NEW.`qua
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 ;
分隔符//
在更新'stock'A之前创建触发器stock\u update
每行
开始
如果是新的。`quantity`<1,则//属于别名A
更新'ps_产品'B
设置B.`visibility`='none';
其中id\u product=OLD.id\u product//应该是别名的id\u乘积
否则,如果NEW.quantity>0,则
更新'ps_产品'C
设置C.`可见性'='两者';
其中id\u product=OLD.id\u product//应该是别名的id\u乘积
如果结束;
结束//
定界符;
试试这个
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 ;
分隔符//
在更新'stock'之前创建触发器stock\u update
每行
开始
如果是新的。`quantity`<1,则#属于别名A
更新'ps_产品'B
设置B.`visibility`='none'
其中id_product=OLD.id_product#应为别名的id_乘积
否则,如果NEW.quantity>0,则
更新'ps_产品'C
设置C.`visibility`=“两者”
其中id_product=OLD.id_product#//应为别名的id_乘积
如果结束;
结束//
定界符;
这表明mysql workbbench中没有错误您希望第二行末尾的“A”做什么?代码中的注释表明您将其视为别名。不能为触发器所在的表设置别名。此外,MySQL注释以#
或--
开头。