ใช้ ALTER TABLE ADD COLUMN ... GENERATED ALWAYS AS (expression) สร้าง Generated Column คำนวณอัตโนมัติ
ตัวอย่างการใช้งาน
1. สร้างตารางและข้อมูลเดิม
mysql> CREATE TABLE DemoTable (Value1 INT, Value2 INT); mysql> INSERT INTO DemoTable VALUES (10, 10), (20, 30);
2. เพิ่มคอลัมน์ Value3 = (Value1 = Value2) แบบ Boolean → 1/0
mysql> ALTER TABLE DemoTable ADD Value3 INT GENERATED ALWAYS AS (Value1 = Value2);
ผลลัพธ์
+--------+--------+--------+ | Value1 | Value2 | Value3 | +--------+--------+--------+ | 10 | 10 | 1 | -- TRUE | 20 | 30 | 0 | -- FALSE +--------+--------+--------+
ประเภท Generated Column
| ประเภท | คำสั่ง | เก็บข้อมูล | คำนวณเมื่อ |
|---|---|---|---|
| VIRTUAL | GENERATED ALWAYS AS (expr) VIRTUAL | ไม่เก็บ (Default) | อ่านทุกครั้ง |
| STORED | GENERATED ALWAYS AS (expr) STORED | เก็บจริง | INSERT/UPDATE |
วิธีเดิม: ADD COLUMN + UPDATE
ALTER TABLE DemoTable ADD Value3 INT; UPDATE DemoTable SET Value3 = (Value1 = Value2);
ข้อเสีย: ต้อง UPDATE เองทุกครั้งที่ Value1/Value2 เปลี่ยน
ข้อดีของ Generated Column
- คำนวณอัตโนมัติ ตรงตามข้อมูลเสมอ
- สามารถสร้าง Index ได้ (STORED)
- ไม่ต้องกังวลลืม UPDATE