Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/72.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 使用一个触发器更新两个表时出现语法错误_Mysql_Triggers - Fatal编程技术网

Mysql 使用一个触发器更新两个表时出现语法错误

Mysql 使用一个触发器更新两个表时出现语法错误,mysql,triggers,Mysql,Triggers,嗨,我正试图用一个触发器更新两个不同的表,但我一直得到语法错误,我不确定我做错了什么 1064-您的SQL语法有错误;检查与您的MySQL服务器版本对应的手册,以了解要使用的正确语法 近“更新特价” 连接特殊对象 在第2行的s.id=o.s'上 如果我只更新一个表,触发器工作正常,但我不能将它们都放在一个触发器中 这是我的扳机 DELIMITER $$ CREATE TRIGGER after_user_type_or_status_change AFTER UPDATE ON

嗨,我正试图用一个触发器更新两个不同的表,但我一直得到语法错误,我不确定我做错了什么

1064-您的SQL语法有错误;检查与您的MySQL服务器版本对应的手册,以了解要使用的正确语法 近“更新特价”

连接特殊对象 在第2行的s.id=o.s'上

如果我只更新一个表,触发器工作正常,但我不能将它们都放在一个触发器中

这是我的扳机

  DELIMITER $$
  CREATE TRIGGER after_user_type_or_status_change
  AFTER UPDATE
  ON users
  FOR EACH ROW

  BEGIN
  UPDATE stats s 

  SET

    ee_counter =
      CASE 
        WHEN  NEW.type= 1 THEN ee_counter + 1
        WHEN  NEW.type= 3  && OLD.type = 2 THEN ee_counter + 1
        WHEN  OLD.type= 1  && NEW.type != 3  THEN ee_counter - 1
        ELSE ee_counter 
      END ,

    er_counter =
      CASE 
        WHEN  NEW.type= 2  THEN er_counter + 1
        WHEN  NEW.type= 3  && OLD.type = 1 THEN er_counter + 1
        WHEN  OLD.type= 2  && NEW.type != 3  THEN er_counter - 1
        ELSE er_counter 
      END 

  WHERE
    s.id = 1;
END $$

BEGIN
UPDATE specialitys sp 

JOIN speciality_objects o
      ON sp.id = o.speciality_id

    JOIN users u
      ON o.user_id = u.id

 SET
    counter =
      CASE 
        WHEN  NEW.status = 1 THEN counter + 1
         ELSE counter 
      END 

  WHERE
    sp.id = o.speciality_id ;

END $$

DELIMITER ;

中间的$$结束触发器定义。将其卸下,然后开始以下操作