sql >> Base de Datos >  >> RDS >> Mysql

Realización de cálculos en el valor predeterminado de MySQL

No. El valor de la cláusula DEFAULT debe ser una constante. (La única excepción a esta regla es el uso de CURRENT_TIMESTAMP como valor predeterminado para un TIMESTAMP columna.)

Como alternativa, puede usar un TRIGGER para establecer un valor para una columna cuando se inserta o actualiza una fila.

Por ejemplo, dentro de un activador ANTES DE INSERTAR PARA CADA FILA, puede realizar cálculos a partir de valores proporcionados para otras columnas y/o consultar datos de otras tablas.

EDITAR

Para el ejemplo dado en la EDICIÓN de la pregunta, un ejemplo de punto de partida para una definición de activación:

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