sql >> Base de Datos >  >> RDS >> Mysql

¿Cómo completar automáticamente un nombre basado en el nombre y apellido en mysql?

Puede crear un disparador ANTES DE INSERTAR y un disparador ANTES DE ACTUALIZAR para establecer el campo de nombre en el valor de CONCAT_WS(' ', first_name, second_name, last_name) de la siguiente manera... pero no haga eso. Es una idea terrible. No almacene la columna de nombre en absoluto. Cuando desee seleccionar el nombre, simplemente seleccione CONCAT_WS(' ', nombre, segundo nombre, apellido) COMO nombre completo.

Tenga en cuenta que CONCAT devolverá nulo si alguno de los valores que está concatenando es nulo, por lo que probablemente desee usar CONCAT_WS (con separador) en su lugar; si algún valor en la lista es nulo, simplemente omitirá ese valor y usará los restantes.

Tus disparadores podrían verse así si decidieras hacer eso:

 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 eso ayude.