powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Подскажите, что за ошибка в триггере?
3 сообщений из 3, страница 1 из 1
Подскажите, что за ошибка в триггере?
    #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
Подскажите, что за ошибка в триггере?
    #39571429
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
svnvladРугается на участок DECLARE - IF EXISTS.
1) Сообщения об ошибке принято цитировать.
2) У Вас неверный синтаксис предложения DECLARE.

svnvladЯ пытаюсь запомнить id в переменную w_id на этапе проверки условия
Сперва SELECT INTO, а потом проверка.
...
Рейтинг: 0 / 0
Подскажите, что за ошибка в триггере?
    #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
3 сообщений из 3, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Подскажите, что за ошибка в триггере?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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