Nej. Värdet för DEFAULT-satsen måste vara en konstant. (Det enda undantaget från denna regel är användningen av CURRENT_TIMESTAMP
som standardvärde för en TIMESTAMP
kolumn.)
Som ett alternativ kan du använda en TRIGGER för att ställa in ett värde för en kolumn när en rad infogas eller uppdateras.
Till exempel, inom en BEFORE INSERT FOR EACH ROW-utlösare kan du utföra beräkningar från värden som tillhandahålls för andra kolumner och/eller frågedata från andra tabeller.
REDIGERA
För exemplet som ges i EDIT av frågan, ett exempel på utgångspunkt för en triggerdefinition:
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