Могу ли я иметь триггер, который использует разные аргументы таблиц? - PullRequest
0 голосов
/ 21 ноября 2018

Я делаю простое приложение с MySql и Мне нужно использовать триггер .Триггер, который, как я думал, будет обновлять таблицу транспортных средств каждый раз, когда человек обновляется с определенным гражданским состоянием.

Я не уверен насчет синтаксиса триггера, но я не нашел ничего, что объясняло бы использование множественногоаргументы из разных таблиц.

Вот мой триггер:

CREATE TRIGGER tr_widow AFTER UPDATE
ON person
FOR EACH ROW
SET v.id_person = p.id_spouse 
FROM person p 
JOIN person p2 ON p.id_spouse = p2.id_person 
JOIN vehicle v ON v.id_person = p.id_person 
WHERE p2.civil_state = 5

Возвращается "Неизвестная системная переменная" id_person "" ошибка.

1 Ответ

0 голосов
/ 21 ноября 2018

Мы используем оператор UPDATE (не предложение SET) для обновления значений в таблицах.Я изменил триггер ниже (исправление всех синтаксических ошибок).Но, по логике вещей, вам все равно нужно точно определить, чего вы пытаетесь достичь.

В триггерах мы можем получить значение NEW и OLD для достижения нашей логики.

DELIMITER $$  -- Define the Delimiter to something else other than ;
CREATE TRIGGER tr_widow AFTER UPDATE
ON person
FOR EACH ROW

  BEGIN  -- Trigger statement body starts with BEGIN clause

    UPDATE vehicle v 
    JOIN person p ON v.id_person = p.id_person 
    JOIN pessoa p2 ON p.id_spouse = p2.id_person 
    SET v.id_person = p.id_spouse 
    WHERE p2.civil_state = 5;

  END $$  -- END the Trigger statement
DELIMITER ;  -- redefine the Delimiter to ;
...