MySQL ondersteunt geen berekende kolommen of uitdrukkingen in de DEFAULT
optie van een kolomdefinitie.
U kunt dit doen in een trigger (MySQL 5.0 of hoger vereist):
CREATE TRIGGER format_stage_name
BEFORE INSERT ON actors
FOR EACH ROW
BEGIN
SET NEW.stage_name = CONCAT(NEW.forename, ' ', NEW.surname);
END
U kunt ook een soortgelijke trigger maken BEFORE UPDATE
.
Pas op voor NULL
in voornaam en achternaam, omdat concat van een NULL
met een andere string produceert een NULL
. Gebruik COALESCE()
op elke kolom of op de aaneengeschakelde tekenreeks, naargelang het geval.
bewerken: Het volgende voorbeeld stelt stage_name
. in alleen als het NULL
is . Anders kunt u de stage_name
. opgeven in uw INSERT
statement, en het blijft behouden.
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