Нет. Значение для предложения DEFAULT должно быть константой. (Единственным исключением из этого правила является использование CURRENT_TIMESTAMP
в качестве значения по умолчанию для столбца TIMESTAMP
.)
. В качестве альтернативы вы можете использовать TRIGGER для установки значения для столбца, когда строка вставлена или обновлена.
Например, в триггере BEFORE INSERT FOR EACH ROW вы можете выполнять вычисления из значений, предоставленных для других столбцов и / или данных запроса из других таблиц.
< hr>EDIT
Для примера, приведенного в 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