sql >> Databasteknik >  >> RDS >> Mysql

Hur fyller man i ett namn automatiskt baserat på för- och efternamn i mysql?

Du kan skapa en INNAN INSERT-trigger och en BEFORE UPDATE-utlösare för att ställa in namnfältet till värdet CONCAT_WS(' ', first_name, middle_name, last_name) enligt följande... men gör inte det. Det är en hemsk idé. Lagra inte namnkolumnen alls. När du vill välja namnet, välj bara CONCAT_WS(' ', first_name, middle_name, last_name) AS full_name.

Observera att CONCAT kommer att returnera null om något av värdena du sammanfogar är null så du vill förmodligen använda CONCAT_WS (med separator) istället - om något värde i listan är null kommer det bara att utelämna det värdet och använda de återstående.

Dina utlösare kan se ut ungefär så här om du bestämmer dig för att göra det:

 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;

Jag hoppas att det hjälper.




  1. JDBC-drivrutinen hittades inte fel i monkeyrunner/jython

  2. 7 sätt att kontrollera din Oracle-version

  3. tecken 0xc286 i UTF-8-kodning har ingen motsvarighet i WIN1252....Vid konvertering med iconv kraschar postgres restore

  4. Ändra eller ställ in MySQL Long Query Time Value för log-slow-queries