sql >> Database >  >> RDS >> Mysql

Hoe vul je automatisch een naam in op basis van voor- en achternaam in mysql?

U kunt een BEFORE INSERT-trigger en een BEFORE UPDATE-trigger om het naamveld als volgt in te stellen op de waarde CONCAT_WS(' ', first_name, middle_name, last_name)... maar doe dat niet. Het is een verschrikkelijk idee. Sla de naamkolom helemaal niet op. Als u de naam wilt selecteren, selecteert u gewoon CONCAT_WS(' ', first_name, middle_name, last_name) AS full_name.

Merk op dat CONCAT null retourneert als een van de waarden die u samenvoegt null is, dus u wilt waarschijnlijk CONCAT_WS (met scheidingsteken) gebruiken - als een waarde in de lijst null is, wordt die waarde weggelaten en de overige gebruikt.

Je triggers kunnen er ongeveer zo uitzien als je besluit dat te doen:

 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;

Ik hoop dat dat helpt.




  1. Databasefout opgetreden Foutnummer:1062

  2. Postgres, unieke index dupliceren

  3. Hoe post-revisies te verwijderen met WP-CLI

  4. MYSQL:Hoe vind ik player_id van achternaam?