mysql триггер после запроса с объединением - PullRequest
0 голосов
/ 31 января 2020

Я хочу создать триггер, который устанавливает новый org_id, когда статус меняется на «stock».
У меня есть 2 таблицы: functionsci с атрибутом org_id и физическое устройство с состоянием. Обновление, которое вызывает триггер, выглядит следующим образом:

UPDATE functionalci f
  JOIN physicaldevice d
    ON f.id = d.id
   SET d.status = 'stock', f.name ="XXX"  
 WHERE d.id = 2

Когда я пытаюсь запустить триггер, например:

CREATE TRIGGER trig1
AFTER UPDATE ON physicaldevice 
FOR EACH ROW  
BEGIN 
    UPDATE functionalci SET org_id=2  WHERE functionalci.id = OLD.id;
END;

У меня появляется эта ошибка: mysql_errno = 1442, mysql_error = Невозможно обновить таблицу 'functionsci' в хранимой функции / триггере, потому что он уже используется оператором, который вызвал эту сохраненную функцию / триггер

Есть ли способ выполнить триггер без изменения UPDATE, который его вызывает?

1 Ответ

0 голосов
/ 12 февраля 2020

Наконец, я создам несколько mysql событий для решения проблемы. Что-то вроде:

CREATE EVENT ev 
ON SCHEDULE EVERY 1 MINUTE
DO
    UPDATE functionalci f
    JOIN physicaldevice d
    ON f.id = d.id
    SET f.org_id = 2
    WHERE f.org_id <> 2 AND d.status LIKE "stock"   

Это не то же самое, что триггер, но у меня работает.

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