Триггер на обновление вычисляемого поля
Есть две таблицы, coords(id, x, y, z) и systems(id, name, distance) Нужен триггер который после добавления записи в coords обновит колонку distance в systems по формуле sqrt(x^2 + y^2 + z^2) в записи по тому же id
Делаю так:
CREATE TRIGGER `Insert` AFTER INSERT ON `coords`
FOR EACH ROW UPDATE systems
SET systems.distance = SQRT (`x`^2 + `y`^2 + `z`^2)
WHERE systems.id = `id`
Но получаю ошибку
"Unknown column 'x' in 'field list'
Как правильно составить такой триггер?
Ответы (1 шт):
Автор решения: Герман Борисов
→ Ссылка
https://dev.mysql.com/doc/refman/8.0/en/trigger-syntax.html
Нужно использовать префикс NEW. для обращения к новым значениям ячеек таблицы, на которую повешен триггер. Без этого в операции UPDATE они воспринимаются как поля обновляемой таблицы systems.
SET systems.distance = SQRT (NEW.x^2 + NEW.y^2 + NEW.z^2)
WHERE systems.id = NEW.id