Mysql
 sql >> Database >  >> RDS >> Mysql

MySQL - Imposta il valore predefinito per il campo come funzione di concatenazione di stringhe

MySQL non supporta colonne o espressioni calcolate nel DEFAULT opzione di una definizione di colonna.

Puoi farlo in un trigger (richiesto MySQL 5.0 o versioni successive):

CREATE TRIGGER format_stage_name 
BEFORE INSERT ON actors
FOR EACH ROW
BEGIN
  SET NEW.stage_name = CONCAT(NEW.forename, ' ', NEW.surname);
END

Potresti anche voler creare un trigger simile BEFORE UPDATE .

Fai attenzione a NULL in nome e cognome, perché concat di un NULL con qualsiasi altra stringa produce un NULL . Usa COALESCE() su ciascuna colonna o sulla stringa concatenata a seconda dei casi.

modifica: L'esempio seguente imposta stage_name solo se è NULL . Altrimenti puoi specificare il stage_name nel tuo INSERT dichiarazione e sarà conservata.

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