Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Como preencher automaticamente um nome com base no nome e sobrenome no mysql?


Você pode criar um BEFORE INSERT trigger e um BEFORE UPDATE trigger para definir o campo de nome para o valor de CONCAT_WS(' ', first_name, middle_name, last_name) como segue... mas não faça isso. É uma ideia terrível. Não armazene a coluna de nome. Quando você quiser selecionar o nome, basta selecionar CONCAT_WS(' ', first_name, middle_name, last_name) AS full_name.

Observe que CONCAT retornará null se algum dos valores que você estiver concatenando for null, então você provavelmente deseja usar CONCAT_WS (com separador) - se qualquer valor na lista for null, ele apenas omitirá esse valor e usará os restantes.

Seus gatilhos podem ficar assim se você decidir fazer isso:
 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;

Espero que isso ajude.