sql >> Databasteknik >  >> RDS >> Mysql

MySQL - Ange standardvärde för fält som en strängsammansättningsfunktion

MySQL stöder inte beräknade kolumner eller uttryck i DEFAULT alternativet för en kolumndefinition.

Du kan göra detta i en trigger (MySQL 5.0 eller senare krävs):

CREATE TRIGGER format_stage_name 
BEFORE INSERT ON actors
FOR EACH ROW
BEGIN
  SET NEW.stage_name = CONCAT(NEW.forename, ' ', NEW.surname);
END

Du kanske också vill skapa en liknande trigger BEFORE UPDATE .

Se upp för NULL i förnamn och efternamn, eftersom konkat av en NULL med vilken annan sträng som helst ger en NULL . Använd COALESCE() på varje kolumn eller på den sammanlänkade strängen beroende på vad som är lämpligt.

redigera: Följande exempel anger stage_name bara om det är NULL . Annars kan du ange stage_name i din INSERT uttalande, och det kommer att bevaras.

CREATE TRIGGER format_stage_name 
BEFORE INSERT ON actors
FOR EACH ROW
BEGIN
  IF (NEW.stage_name IS NULL) THEN
    SET NEW.stage_name = CONCAT(NEW.forename, ' ', NEW.surname);
  END IF;
END


  1. Hur man skapar en sammansatt primär nyckel i MySQL

  2. PHP/MySQL - BÖRJA... COMMIT fungerar inte

  3. Tillbaka från Open World 2013

  4. Ecto skapande av unikt index misslyckades för Mysql/Mariadb