Generated Column er en af de gode tilgange til MySql-versionen, som er 5.7.6 og nyere.
Der er to slags genererede kolonner:
- Virtuel (standard) - kolonne vil blive beregnet med det samme, når arecord læses fra en tabel
- Lagret - kolonne vil blive beregnet, når en ny post skrives/opdateres i tabellen
Begge typer kan have IKKE NULL-begrænsninger, men kun en lagret genereret kolonne kan være en del af et indeks.
For det aktuelle tilfælde vil vi bruge lagret genereret kolonne. For at implementere har jeg overvejet, at begge de værdier, der kræves til beregning, er til stede i tabel
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);
beløb vil automatisk dukke op i tabellen, og du kan få direkte adgang til det. Bemærk også, at når du vil opdatere nogen af kolonnerne, vil beløbet også blive opdateret.