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

Я пытаюсь узнать больше о триггерах 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
Формы c голосовым вводом в React с помощью Speechly
Формы c голосовым вводом в React с помощью Speechly
Пытались ли вы когда-нибудь заполнить веб-форму в области электронной коммерции, которая требует много кликов и выбора? Вас попросят заполнить дату,...
Стилизация и валидация html-формы без использования JavaScript (только HTML/CSS)
Стилизация и валидация html-формы без использования JavaScript (только HTML/CSS)
Будучи разработчиком веб-приложений, легко впасть в заблуждение, считая, что приложение без JavaScript не имеет права на жизнь. Нам становится удобно...
Flatpickr: простой модуль календаря для вашего приложения на React
Flatpickr: простой модуль календаря для вашего приложения на React
Если вы ищете пакет для быстрой интеграции календаря с выбором даты в ваше приложения, то библиотека Flatpickr отлично справится с этой задачей....
В чем разница между Promise и Observable?
В чем разница между Promise и Observable?
Разберитесь в этом вопросе, и вы значительно повысите уровень своей компетенции.
Что такое cURL в PHP? Встроенные функции и пример GET запроса
Что такое cURL в PHP? Встроенные функции и пример GET запроса
Клиент для URL-адресов, cURL, позволяет взаимодействовать с множеством различных серверов по множеству различных протоколов с синтаксисом URL.
Четыре эффективных способа центрирования блочных элементов в CSS
Четыре эффективных способа центрирования блочных элементов в CSS
У каждого из нас бывали случаи, когда нам нужно отцентрировать блочный элемент, но мы не знаем, как это сделать. Даже если мы реализуем какой-то...
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

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