Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Spalte aus einer anderen Spalte berechnet?

Generated Column ist einer der guten Ansätze für die MySQL-Version 5.7.6 und höher.

Es gibt zwei Arten von generierten Spalten:

  • Virtuell (Standard) – Spalte wird spontan berechnet, wenn ein Datensatz aus einer Tabelle gelesen wird
  • Gespeichert - Spalte wird berechnet, wenn ein neuer Datensatz in die Tabelle geschrieben/aktualisiert wird

Beide Typen können NOT NULL-Einschränkungen haben, aber nur eine gespeicherte generierte Spalte kann Teil eines Indexes sein.

Für den aktuellen Fall verwenden wir die gespeicherte generierte Spalte. Zur Umsetzung habe ich berücksichtigt, dass beide zur Berechnung benötigten Werte in Tabelle

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

Der Betrag wird automatisch in der Tabelle angezeigt und Sie können direkt darauf zugreifen. Beachten Sie außerdem, dass der Betrag immer aktualisiert wird, wenn Sie eine der Spalten aktualisieren.