Не. Стойността на клаузата DEFAULT трябва да е константа. (Единственото изключение от това правило е използването на CURRENT_TIMESTAMP
като стойност по подразбиране за TIMESTAMP
колона.)
Като алтернатива можете да използвате TRIGGER, за да зададете стойност за колона, когато ред е вмъкнат или актуализиран.
Например, в рамките на тригер BEFORE INSERT FOR EACH ROW можете да извършвате изчисления от стойности, предоставени за други колони, и/или да заявите данни от други таблици.
РЕДАКТИРАНЕ
За примера, даден в EDIT на въпроса, примерна отправна точка за дефиниция на задействане:
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