Możesz utworzyć wyzwalacz PRZED WSTAWIENIEM i wyzwalacz PRZED UPDATE aby ustawić pole nazwy na wartość CONCAT_WS(' ', imię, drugie_imię, nazwisko) w następujący sposób... ale nie rób tego. To okropny pomysł. W ogóle nie przechowuj kolumny nazwy. Jeśli chcesz wybrać imię, po prostu wybierz CONCAT_WS(' ', imię, drugie_imię, nazwisko) AS full_name.
Zauważ, że CONCAT zwróci null, jeśli którakolwiek z wartości, które łączysz, jest null, więc prawdopodobnie chcesz zamiast tego użyć CONCAT_WS (z separatorem) — jeśli jakakolwiek wartość na liście jest null, po prostu pominie tę wartość i użyje pozostałych.
Twoje wyzwalacze mogą wyglądać mniej więcej tak, jeśli zdecydujesz się to zrobić:
CREATE TRIGGER name_update BEFORE UPDATE ON member
FOR EACH ROW
BEGIN
SET NEW.name = CONCAT_WS(' ', NEW.first_name, NEW.middle_name, NEW.last_name);
END;
CREATE TRIGGER name_insert BEFORE INSERT ON member
FOR EACH ROW
BEGIN
SET NEW.name = CONCAT_WS(' ', NEW.first_name, NEW.middle_name, NEW.last_name);
END;
Mam nadzieję, że to pomoże.