Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql触发器if语句更新第二个表_Mysql_Triggers - Fatal编程技术网

Mysql触发器if语句更新第二个表

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

我正在尝试创建一个mysql触发器。这就是我试图创建的,但不知怎么的,它告诉我:“您的SQL语法有一个错误;请查看与您的MySQL服务器版本对应的手册,以了解在‘A’附近使用的正确语法 每行”

我做错了什么?我试着用不同的名字给它们命名,但似乎不起作用

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注释以
#
--
开头。