MySQL understøtter ikke beregnede kolonner eller udtryk i DEFAULT
mulighed for en kolonnedefinition.
Du kan gøre dette i en trigger (MySQL 5.0 eller nyere påkrævet):
CREATE TRIGGER format_stage_name
BEFORE INSERT ON actors
FOR EACH ROW
BEGIN
SET NEW.stage_name = CONCAT(NEW.forename, ' ', NEW.surname);
END
Du vil måske også oprette en lignende trigger BEFORE UPDATE
.
Pas på NULL
i fornavn og efternavn, fordi konkat af en NULL
med en hvilken som helst anden streng producerer en NULL
. Brug COALESCE()
på hver kolonne eller på den sammenkædede streng efter behov.
rediger: Følgende eksempel angiver stage_name
kun hvis det er NULL
. Ellers kan du angive stage_name
i din INSERT
erklæring, og den vil blive bevaret.
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