Генерираната колона е един от добрите подходи за версията на MySql, която е 5.7.6 и по-нова.
Има два вида генерирани колони:
- Виртуална (по подразбиране) – колоната ще се изчислява в движение, когато записът се чете от таблица
- Съхранено – колоната ще бъде изчислена, когато нов запис бъде записан/актуализиран в таблицата
И двата типа могат да имат НЕ NULL ограничения, но само съхранената генерирана колона може да бъде част от индекс.
За текущия случай ще използваме съхранена генерирана колона. За да приложим, прецених, че и двете стойности, необходими за изчисление, присъстват в таблица
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);
сумата автоматично ще се появи в таблицата и имате директен достъп до нея. Също така, моля, имайте предвид, че всеки път, когато актуализирате някоя от колоните, сумата също ще се актуализира.