Generated Column (Virtual Column) สำหรับคำนวณอัตโนมัติ
MySQL 5.7+ รองรับ GENERATED ALWAYS AS (expression) VIRTUAL คำนวณค่าอัตโนมัติเมื่อ SELECT ไม่เก็บข้อมูลจริง
คำสั่ง ALTER TABLE
ALTER TABLE demo32
ADD COLUMN `Average Score` FLOAT
GENERATED ALWAYS AS ((value1 + value2) / 2) VIRTUAL;
ตัวอย่างเต็ม
CREATE TABLE demo32 (value1 INT, value2 INT);
INSERT INTO demo32 VALUES (30, 60), (20, 40), (35, 35);
-- เพิ่ม Generated Column
ALTER TABLE demo32
ADD COLUMN `Average Score` FLOAT
GENERATED ALWAYS AS ((value1 + value2) / 2) VIRTUAL;
SELECT * FROM demo32;
ผลลัพธ์
| value1 | value2 | Average Score |
|---|---|---|
| 30 | 60 | 45 |
| 20 | 40 | 30 |
| 35 | 35 | 35 |
ข้อดี:
- ไม่ต้อง UPDATE คำนวณเอง
- ไม่ใช้พื้นที่จัดเก็บ (VIRTUAL)
- ค่าสม่ำเสมอถูกต้องตามข้อมูลล่าสุด
- สามารถ Index ได้ (ในบางกรณี)
Stored Generated Column: ใช้ STORED แทน VIRTUAL จะเก็บค่าจริง ใช้พื้นที่ แต่อ่านเร็วกว่า