MySQL 5.7+ এ GENERATED ALWAYS AS ... VIRTUAL কলাম ব্যবহার করে অন্য কলামের ভ্যালুর ভিত্তিতে অটোমেটিক্যালি ক্যালকুলেটেড ভ্যালু দেখানো যায়, কোনো INSERT/UPDATE দরকার নয়। এটি স্টোরেজ না নেওয়া সত্ত্বেও রিয়েল-টাইমে আপডেট হয়।
টেবিল তৈরি
mysql> CREATE TABLE demo32 (value1 INT, value2 INT); mysql> INSERT INTO demo32 VALUES (30,60), (20,40), (35,35);
mysql> SELECT * FROM demo32; +--------+--------+ | value1 | value2 | +--------+--------+ | 30 | 60 | | 20 | 40 | | 35 | 35 | +--------+--------+
ভার্চুয়াল কলাম যোগ করা (গড় স্কোর)
mysql> ALTER TABLE demo32
-> ADD COLUMN `Average Score` FLOAT
-> GENERATED ALWAYS AS ((value1 + value2) / 2) VIRTUAL;
Query OK, 0 rows affected (1.57 sec)
ফলাফল (অটোমেটিক্যালি ক্যালকুলেটেড)
mysql> SELECT * FROM demo32; +--------+--------+---------------+ | value1 | value2 | Average Score | +--------+--------+---------------+ | 30 | 60 | 45 | | 20 | 40 | 30 | | 35 | 35 | 35 | +--------+--------+---------------+
VIRTUAL vs STORED:
- VIRTUAL (ডিফল্ট): রিড টাইমে ক্যালকুলেট, স্টোরেজ নেই, সবসময় আপডেটেড
- STORED: লিখা টাইমে ক্যালকুলেট, স্টোরেজ নেয়, দ্রুত রিড
ব্যবহার: রিপোর্টিং, ড্যাশবোর্ড, ক্যালকুলেটেড ফিল্ডের জন্য আদর্শ। ইনডেক্সও দেওয়া যায় (STORED-এ)।