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

Coluna calculada a partir de outra coluna?


A coluna gerada é uma das boas abordagens para a versão do MySql, que é 5.7.6 e superior.

Existem dois tipos de Colunas Geradas:
  • Virtual (padrão) - a coluna será calculada dinamicamente quando um registro for lido de uma tabela
  • Armazenado - a coluna será calculada quando um novo registro for gravado/atualizado na tabela

Ambos os tipos podem ter restrições NOT NULL, mas apenas uma Coluna Gerada armazenada pode fazer parte de um índice.

Para o caso atual, vamos usar a coluna gerada armazenada. Para implementar considerei que ambos os valores necessários para o cálculo estão presentes na tabela
CREATE TABLE order_details (price DOUBLE, quantity INT, amount DOUBLE AS (price * quantity));

INSERT INTO order_details (price, quantity) VALUES(100,1),(300,4),(60,8);

O valor aparecerá automaticamente na tabela e você poderá acessá-lo diretamente, observe também que sempre que você atualizar qualquer uma das colunas, o valor também será atualizado.