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