Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Подскажите, что за ошибка в триггере? / 3 сообщений из 3, страница 1 из 1
18.12.2017, 14:37
    #39571423
svnvlad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите, что за ошибка в триггере?
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
CREATE DEFINER = 'my_base'@'%' TRIGGER `plan_schedule_order_mechanism_after_upd_tr1` AFTER UPDATE ON `plan_schedule_order_mechanism`
  FOR EACH ROW
BEGIN
  DECLARE w_id INTEGER(11, UNSIGNED);

  IF EXISTS(SELECT id INTO w_id
            FROM work w
            INNER JOIN mechanism_work mw ON mw.id = w.mechanism_work_id
            WHERE mw.plan_schedule_order_mechanism_id = OLD.id 
            AND w.machine_operator = 'Y')            
            
  THEN  
    UPDATE work
    SET plan_schedule_order_worker_id = NEW.plan_schedule_order_worker_id)
    WHERE id = w_id;

  END IF;
END


Ругается на участок DECLARE - IF EXISTS.
Я пытаюсь запомнить id в переменную w_id на этапе проверки условия, и потом использовать ее при обновлении, чтобы второй раз джойны не городить.
...
Рейтинг: 0 / 0
18.12.2017, 14:41
    #39571429
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите, что за ошибка в триггере?
svnvladРугается на участок DECLARE - IF EXISTS.
1) Сообщения об ошибке принято цитировать.
2) У Вас неверный синтаксис предложения DECLARE.

svnvladЯ пытаюсь запомнить id в переменную w_id на этапе проверки условия
Сперва SELECT INTO, а потом проверка.
...
Рейтинг: 0 / 0
18.12.2017, 15:02
    #39571459
svnvlad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите, что за ошибка в триггере?
Akina,

Вот так теперь, работает
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
BEGIN
  DECLARE w_id INTEGER(11) UNSIGNED;

  SELECT work.id INTO w_id 
         FROM work 
         INNER JOIN mechanism_work ON mechanism_work.id = work.mechanism_work_id
         WHERE mechanism_work.plan_schedule_order_mechanism_id = OLD.id 
         AND work.machine_operator = 'Y';

  IF w_id IS NOT NULL
  THEN  
    UPDATE work
    SET plan_schedule_order_worker_id = NEW.plan_schedule_order_worker_id
    WHERE id = w_id;

  END IF;
END
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Подскажите, что за ошибка в триггере? / 3 сообщений из 3, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]