Nee. De waarde voor de DEFAULT-clausule moet een constante zijn. (De enige uitzondering op deze regel is het gebruik van CURRENT_TIMESTAMP
als standaardwaarde voor een TIMESTAMP
kolom.)
Als alternatief kunt u een TRIGGER gebruiken om een waarde voor een kolom in te stellen wanneer een rij wordt ingevoegd of bijgewerkt.
Binnen een BEFORE INSERT FOR ELKE ROW-trigger kunt u bijvoorbeeld berekeningen uitvoeren op basis van waarden die voor andere kolommen zijn opgegeven en/of gegevens uit andere tabellen opvragen.
BEWERKEN
Voor het voorbeeld gegeven in de EDIT van de vraag, een voorbeeld startpunt voor een triggerdefinitie:
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