SET full_name = CONCAT (NEW.fname, '', NEW.lname) WHERE contacts_id = $ contacts_id;
Это недопустимый синтаксис:
SET
не принимает предложение WHERE
(SQL запросы, например SELECT
, UPDATE
, INSERT
)
$contacts_id
совершенно неизвестна СУРБД
Вы, кажется, пытаетесь автоматически обновить значение поля full_name
value, когда UPDATE
выполняется заново таблица contacts
.
Чтобы сделать это, вам нужно использовать триггер BEFORE UPDATE
(вместо AFTER UPDATE
), где вы можете установить значение NEW.full_name
.Обычно рекомендуется также убедиться, что значение не было задано в запросе на обновление до его установки:
CREATE TRIGGER foo BEFORE UPDATE ON contacts
FOR EACH ROW
IF NEW.full_name IS NULL THEN
SET NEW.full_name := CONCAT(
COALESCE(NEW.fname, OLD.fname),
' ',
COALESCE(NEW.lname, OLD.fname)
);
END IF;;