Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

MySQL - Defina o valor padrão para o campo como uma função de concatenação de string


O MySQL não suporta colunas ou expressões computadas no DEFAULT opção de uma definição de coluna.

Você pode fazer isso em um gatilho (necessário MySQL 5.0 ou superior):
CREATE TRIGGER format_stage_name 
BEFORE INSERT ON actors
FOR EACH ROW
BEGIN
  SET NEW.stage_name = CONCAT(NEW.forename, ' ', NEW.surname);
END

Você também pode criar um gatilho semelhante BEFORE UPDATE .

Cuidado com NULL em nome próprio e sobrenome, porque concat de um NULL com qualquer outra string produz um NULL . Use COALESCE() em cada coluna ou na string concatenada conforme apropriado.

editar: O exemplo a seguir define stage_name somente se for NULL . Caso contrário, você pode especificar o stage_name em seu INSERT declaração, e ela será preservada.
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