Mysql
 sql >> Base de données >  >> RDS >> Mysql

MySQL - Définir la valeur par défaut du champ en tant que fonction de concaténation de chaînes

MySQL ne prend pas en charge les colonnes ou expressions calculées dans le DEFAULT option d'une définition de colonne.

Vous pouvez le faire dans un déclencheur (MySQL 5.0 ou supérieur requis) :

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

Vous pouvez également créer un déclencheur similaire BEFORE UPDATE .

Attention à NULL en prénom et nom, car concat d'un NULL avec n'importe quelle autre chaîne produit un NULL . Utilisez COALESCE() sur chaque colonne ou sur la chaîne concaténée selon le cas.

modifier : L'exemple suivant définit stage_name seulement si c'est NULL . Sinon, vous pouvez spécifier le stage_name dans votre INSERT déclaration, et elle sera conservée.

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