Mysql
 sql >> Base de données >  >> RDS >> Mysql

Colonne calculée à partir d'une autre colonne ?

La colonne générée est l'une des bonnes approches pour la version MySql qui est 5.7.6 et supérieure.

Il existe deux types de colonnes générées :

  • Virtuel (par défaut) - la colonne sera calculée à la volée lorsqu'un enregistrement est lu à partir d'une table
  • Stocké - la colonne sera calculée lorsqu'un nouvel enregistrement est écrit/mis à jour dans la table

Les deux types peuvent avoir des restrictions NOT NULL, mais seule une colonne générée stockée peut faire partie d'un index.

Pour le cas actuel, nous allons utiliser la colonne générée stockée. Pour mettre en œuvre, j'ai considéré que les deux valeurs requises pour le calcul sont présentes dans le tableau

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

le montant apparaîtra automatiquement dans le tableau et vous pourrez y accéder directement, veuillez également noter que chaque fois que vous mettrez à jour l'une des colonnes, le montant sera également mis à jour.