MySQL не поддържа изчислени колони или изрази в DEFAULT
опция за дефиниция на колона.
Можете да направите това в тригер (изисква се MySQL 5.0 или по-нова версия):
CREATE TRIGGER format_stage_name
BEFORE INSERT ON actors
FOR EACH ROW
BEGIN
SET NEW.stage_name = CONCAT(NEW.forename, ' ', NEW.surname);
END
Може също да искате да създадете подобен тригер BEFORE UPDATE
.
Внимавайте за NULL
в име и фамилия, защото конкат на NULL
с всеки друг низ създава NULL
. Използвайте COALESCE()
на всяка колона или на свързания низ според случая.
редактиране: Следният пример задава stage_name
само ако е NULL
. В противен случай можете да посочите stage_name
във вашия INSERT
изявление и то ще бъде запазено.
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