生成された列は、5.7.6以降のMySqlバージョンに適したアプローチの1つです。
生成された列には次の2種類があります。
- 仮想(デフォルト)-レコードがテーブルから読み取られるときに、列がオンザフライで計算されます
- 保存-列は、新しいレコードがテーブルに書き込まれる/更新されるときに計算されます
どちらのタイプにもNOTNULL制限を設定できますが、インデックスに含めることができるのは、保存されている生成列のみです。
現在のケースでは、保存された生成列を使用します。実装するために、計算に必要な両方の値がテーブルに存在すると考えました
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);
金額は自動的にテーブルにポップアップ表示され、直接アクセスできます。また、いずれかの列を更新するたびに、金額も更新されることに注意してください。