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

Effectuer un calcul dans la valeur MySQL par défaut

Non. La valeur de la clause DEFAULT doit être une constante. (La seule exception à cette règle est l'utilisation de CURRENT_TIMESTAMP comme valeur par défaut pour un TIMESTAMP colonne.)

Comme alternative, vous pouvez utiliser un TRIGGER pour définir une valeur pour une colonne lorsqu'une ligne est insérée ou mise à jour.

Par exemple, dans un déclencheur BEFORE INSERT FOR EACH ROW, vous pouvez effectuer des calculs à partir des valeurs fournies pour d'autres colonnes et/ou interroger des données d'autres tables.

MODIFIER

Pour l'exemple donné dans l'EDIT de la question, un exemple de point de départ pour une définition de déclencheur :

CREATE TRIGGER mytable_bi 
BEFORE INSERT ON mytable 
FOR EACH ROW
BEGIN
  SET NEW.percentage = (100.0 * NEW.marks) / NULLIF(NEW.total_marks,0);
END