Nein. Der Wert für die DEFAULT-Klausel muss eine Konstante sein. (Die einzige Ausnahme von dieser Regel ist die Verwendung von CURRENT_TIMESTAMP
als Standardwert für einen TIMESTAMP
Spalte.)
Alternativ können Sie einen TRIGGER verwenden, um einen Wert für eine Spalte festzulegen, wenn eine Zeile eingefügt oder aktualisiert wird.
Beispielsweise können Sie innerhalb eines BEFORE INSERT FOR EACH ROW-Triggers Berechnungen aus Werten durchführen, die für andere Spalten bereitgestellt werden, und/oder Daten aus anderen Tabellen abfragen.
BEARBEITEN
Für das im EDIT der Frage angegebene Beispiel ein beispielhafter Ausgangspunkt für eine 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