MySQL Generated Columns
MySQL 5.7 から入った機能
カラムを INSERT/UPDATEなしに MySQL 側で作成する機能
Virtual / Stored の2種類あり、Stored はレコードが追加/更新されるたびにカラムの値が更新され、 Virtual は read 時に計算される
Storedにしないと index は効かない
Virtual
code:sql
CREATE TABLE products (
id int NOT NULL,
price int NOT NULL,
count int NOT NULL,
total int NOT NULL AS (price * count`),
PRIMARY KEY(id)
);
Stored
code:sql
CREATE TABLE products (
id int NOT NULL,
price int NOT NULL,
count int NOT NULL,
total int NOT NULL AS (price * count`) STORED,
PRIMARY KEY(id)
);
ebiken.icon ISUCONでは使えるが、今の所本番サービスで使うユースケースはわからない
ドメインロジックはアプリケーション側に寄せたい
ref
https://gabi.dev/2016/10/17/understanding-generated-columns/?utm_source=pocket_mylist