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