MySQL nie obsługuje kolumn obliczanych ani wyrażeń w DEFAULT
opcja definicji kolumny.
Możesz to zrobić w wyzwalaczu (wymagany MySQL 5.0 lub nowszy):
CREATE TRIGGER format_stage_name
BEFORE INSERT ON actors
FOR EACH ROW
BEGIN
SET NEW.stage_name = CONCAT(NEW.forename, ' ', NEW.surname);
END
Możesz również utworzyć podobny wyzwalacz BEFORE UPDATE
.
Uważaj na NULL
w imieniu i nazwisku, ponieważ konkat NULL
z dowolnym innym ciągiem tworzy NULL
. Użyj COALESCE()
odpowiednio w każdej kolumnie lub w połączonym łańcuchu.
edytuj: Poniższy przykład ustawia stage_name
tylko jeśli jest NULL
. W przeciwnym razie możesz określić stage_name
w swoim INSERT
oświadczenie i zostanie zachowane.
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