sql >> Base de Datos >  >> RDS >> Mysql

MySQL:establezca el valor predeterminado para el campo como una función de concatenación de cadenas

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