Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Wie füllt man automatisch einen Namen basierend auf dem Vor- und Nachnamen in mysql aus?

Sie könnten einen BEFORE INSERT-Trigger und einen BEFORE UPDATE-Trigger um das Namensfeld wie folgt auf den Wert von CONCAT_WS(' ', first_name, middle_name, last_name) zu setzen ... aber tun Sie das nicht. Es ist eine schreckliche Idee. Speichern Sie die Namensspalte überhaupt nicht. Wenn Sie den Namen auswählen möchten, wählen Sie einfach CONCAT_WS(' ', first_name, middle_name, last_name) AS full_name.

Beachten Sie, dass CONCAT null zurückgibt, wenn einer der Werte, die Sie verknüpfen, null ist, sodass Sie wahrscheinlich stattdessen CONCAT_WS (mit Trennzeichen) verwenden möchten. Wenn ein Wert in der Liste null ist, wird dieser Wert einfach weggelassen und die verbleibenden verwendet.

Ihre Trigger könnten in etwa so aussehen, wenn Sie sich dafür entschieden haben:

 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;

Ich hoffe, das hilft.