синтаксическая ошибка при обновлении двух таблиц одним триггером - PullRequest
0 голосов
/ 04 марта 2012

Привет, я пытаюсь обновить две разные таблицы с помощью одного триггера, но я получаю синтаксическую ошибку, и я не уверен, что я делаю неправильно

1064 - у вас ошибка в синтаксисе SQL; проверьте руководство, соответствующее вашей версии сервера MySQL для правильного синтаксиса для использования

около 'ОБНОВЛЕНИЯ специальностей с

ПРИСОЕДИНИТЬСЯ к speciality_objects o ON s.id = o.speciality 'в строке 2

триггеры работают нормально, если я просто обновляю одну таблицу, но не могу поместить их оба в один триггер

вот мой триггер

  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 ;

1 Ответ

0 голосов
/ 04 марта 2012

END $$ в середине завершает определение триггера.Удалите его и следующие BEGIN.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...