Триггер на обновление вычисляемого поля

Есть две таблицы, 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
→ Ссылка