Триггер создания объединяет поля имени и фамилии в одно при обновлении поля или вставке

Я пытаюсь узнать больше о триггерах MySQL

Мне нужен триггер, который объединяет столбцы имени и фамилии в один столбец полного имени, когда это поле имени или фамилии обновляется или создается/вставляется новая строка

Что-то вроде?

CREATE TRIGGER `fullname` BEFORE INSERT ON users 
FOR EACH ROW Set users.fullname = CONCAT(users.firstname, ' ', users.lastname);

сгенерированный столбец может быть более разумным решением?

Luuk 10.04.2022 11:40

@Luuk Моя цель - создать полнотекстовый индекс для этого поля полного имени.

Utku Dalmaz 10.04.2022 11:42

@Luuk также кажется, что сгенерированный столбец не может быть обновлен

Utku Dalmaz 10.04.2022 11:45

Но когда вы определяете триггер, обновление на fullname также не будет иметь большого эффекта...

Luuk 10.04.2022 11:47

@Luuk, почему это? могу ли я изменить столбец на сгенерированный столбец?

Utku Dalmaz 10.04.2022 11:52
ALTER TABLE и сгенерированные столбцы (TL;DR это ?)
Luuk 10.04.2022 11:55
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
В предыдущем посте мы создали функциональность вставки и чтения для нашей динамической СУБД. В этом посте мы собираемся реализовать функции обновления...
Документирование API с помощью Swagger на Springboot
Документирование API с помощью Swagger на Springboot
В предыдущей статье мы уже узнали, как создать Rest API с помощью Springboot и MySql .
Роли и разрешения пользователей без пакета Laravel 9
Роли и разрешения пользователей без пакета Laravel 9
Этот пост изначально был опубликован на techsolutionstuff.com .
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
0
6
15
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

«В теле триггера ключевые слова 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 не имеет триггера вставки и обновления, вам нужен один из каждого

Спасибо. Этот триггер обновления работает при обновлении любого поля? Если да, могу ли я ограничить его работу только при обновлении поля имени или фамилии?

Utku Dalmaz 10.04.2022 19:51

Другие вопросы по теме