Я пытаюсь узнать больше о триггерах MySQL
Мне нужен триггер, который объединяет столбцы имени и фамилии в один столбец полного имени, когда это поле имени или фамилии обновляется или создается/вставляется новая строка
Что-то вроде?
CREATE TRIGGER `fullname` BEFORE INSERT ON users
FOR EACH ROW Set users.fullname = CONCAT(users.firstname, ' ', users.lastname);
@Luuk Моя цель - создать полнотекстовый индекс для этого поля полного имени.
@Luuk также кажется, что сгенерированный столбец не может быть обновлен
Но когда вы определяете триггер, обновление на fullname
также не будет иметь большого эффекта...
@Luuk, почему это? могу ли я изменить столбец на сгенерированный столбец?
«В теле триггера ключевые слова OLD и NEW позволяют получить доступ к столбцам в строках, затронутых триггером» — https://dev.mysql.com/doc/refman/8.0/en/trigger-syntax.html
другими словами
CREATE TRIGGER `fullname` BEFORE INSERT ON users
FOR EACH ROW Set NEW.fullname = CONCAT(NEW.firstname, ' ', NEW.lastname);
и в триггере обновления
CREATE TRIGGER `fullname` BEFORE update ON users
FOR EACH ROW Set NEW.fullname = CONCAT(NEW.firstname, ' ', NEW.lastname);
NB mysql не имеет триггера вставки и обновления, вам нужен один из каждого
Спасибо. Этот триггер обновления работает при обновлении любого поля? Если да, могу ли я ограничить его работу только при обновлении поля имени или фамилии?
сгенерированный столбец может быть более разумным решением?