Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Executando o cálculo no valor padrão do MySQL


Não. O valor da cláusula DEFAULT deve ser uma constante. (A única exceção a esta regra é o uso de CURRENT_TIMESTAMP como um valor padrão para um TIMESTAMP coluna.)

Como alternativa, você pode usar um TRIGGER para definir um valor para uma coluna quando uma linha é inserida ou atualizada.

Por exemplo, em um gatilho BEFORE INSERT FOR EACH ROW, você pode realizar cálculos a partir de valores fornecidos para outras colunas e/ou consultar dados de outras tabelas.

EDITAR

Para o exemplo dado na EDIT da pergunta, um exemplo de ponto de partida para uma definição de gatilho:
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