Tidak. Nilai untuk klausa DEFAULT harus berupa konstanta. (Satu-satunya pengecualian untuk aturan ini adalah penggunaan CURRENT_TIMESTAMP
sebagai nilai default untuk TIMESTAMP
kolom.)
Sebagai alternatif, Anda dapat menggunakan TRIGGER untuk menetapkan nilai kolom saat baris disisipkan atau diperbarui.
Misalnya, dalam pemicu BEFORE INSERT FOR EACH ROW, Anda dapat melakukan penghitungan dari nilai yang diberikan untuk kolom lain dan/atau data kueri dari tabel lain.
EDIT
Untuk contoh yang diberikan dalam EDIT pertanyaan, contoh titik awal untuk definisi pemicu:
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