MySQL no admite columnas calculadas o expresiones en el DEFAULT
opción de una definición de columna.
Puede hacer esto en un activador (se requiere MySQL 5.0 o superior):
CREATE TRIGGER format_stage_name
BEFORE INSERT ON actors
FOR EACH ROW
BEGIN
SET NEW.stage_name = CONCAT(NEW.forename, ' ', NEW.surname);
END
También puede crear un activador similar BEFORE UPDATE
.
Cuidado con NULL
en nombre y apellido, porque concat de un NULL
con cualquier otra cadena produce un NULL
. Usa COALESCE()
en cada columna o en la cadena concatenada según corresponda.
editar: El siguiente ejemplo establece stage_name
solo si es NULL
. De lo contrario, puede especificar el stage_name
en tu INSERT
declaración, y se conservará.
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