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