Mysql
 sql >> Database >  >> RDS >> Mysql

Come popolare automaticamente un nome in base al nome e al cognome in mysql?

Puoi creare un PRIMA INSERT trigger e un PRIMA AGGIORNAMENTO trigger per impostare il campo del nome sul valore di CONCAT_WS(' ', first_name, secondo_name, last_name) come segue... ma non farlo. È un'idea terribile. Non memorizzare affatto la colonna del nome. Quando vuoi selezionare il nome, seleziona CONCAT_WS(' ', first_name, secondo_name, last_name) AS full_name.

Nota che CONCAT restituirà null se uno qualsiasi dei valori che stai concatenando è nullo, quindi probabilmente vorrai utilizzare CONCAT_WS (con separatore) invece - se un valore nell'elenco è nullo ometterà semplicemente quel valore e utilizzerà quelli rimanenti.

I tuoi trigger potrebbero assomigliare a questo se decidessi di farlo:

 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;

Spero di esserti stato d'aiuto.