いいえ。DEFAULT句の値は定数でなければなりません。 (このルールの1つの例外は、CURRENT_TIMESTAMP
の使用です。 TIMESTAMP
のデフォルト値として 列。)
別の方法として、TRIGGERを使用して、行が挿入または更新されたときに列の値を設定できます。
たとえば、BEFORE INSERT FOR EACH ROWトリガー内で、他の列に指定された値から計算を実行したり、他のテーブルからデータをクエリしたりできます。
編集
質問の編集で与えられた例の場合、トリガー定義の開始点の例:
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