Wygenerowana kolumna jest jednym z dobrych podejść dla wersji MySql, która jest 5.7.6 i nowsza.
Istnieją dwa rodzaje wygenerowanych kolumn:
- Wirtualny (domyślnie) - kolumna zostanie obliczona w locie, gdy arecord zostanie odczytany z tabeli
- Przechowywane - kolumna zostanie obliczona, gdy nowy rekord zostanie zapisany/zaktualizowany w tabeli
Oba typy mogą mieć ograniczenia NOT NULL, ale tylko przechowywana wygenerowana kolumna może być częścią indeksu.
W obecnym przypadku użyjemy zapisanej wygenerowanej kolumny. Aby wdrożyć, wziąłem pod uwagę, że obie wartości wymagane do obliczeń znajdują się w tabeli
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);
kwota automatycznie pojawi się w tabeli i będziesz mieć do niej bezpośredni dostęp, pamiętaj również, że za każdym razem, gdy zaktualizujesz którąkolwiek z kolumn, kwota również zostanie zaktualizowana.