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

¿Columna calculada a partir de otra columna?

Columna generada es uno de los buenos enfoques para la versión de MySql que es 5.7.6 y superior.

Hay dos tipos de columnas generadas:

  • Virtual (predeterminado):la columna se calculará sobre la marcha cuando se lea un registro de una tabla
  • Almacenado:la columna se calculará cuando se escriba/actualice un nuevo registro en la tabla

Ambos tipos pueden tener restricciones NOT NULL, pero solo una columna generada almacenada puede ser parte de un índice.

Para el caso actual, vamos a utilizar la columna generada almacenada. Para implementar he considerado que ambos valores requeridos para el cálculo están presentes en la tabla

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);

la cantidad aparecerá automáticamente en la tabla y podrá acceder a ella directamente, también tenga en cuenta que cada vez que actualice cualquiera de las columnas, la cantidad también se actualizará.