شرح صفوف ومحتوى الفقرة
يوفر محرك MySQL 8 وضعين لتخزين الأعمدة المولدة يجب اختيار الأنسب منهما بعناية:
- الوضع الافتراضي
VIRTUAL: لا يستهلك أي مساحة تخزين داخل الصف على القرص، بل تُحسب قيمته لحظياً في الذاكرة عند تنفيذSELECT. وتتميز أعمدةVIRTUALبإضافتها الفورية ودعمها للفهارس الثانوية في InnoDB. - الوضع المخزن
STORED: تُحسب قيمته عند تنفيذINSERTأوUPDATEوتُكتب فعلياً على القرص؛ ويُستخدم عند الحاجة لتضمين العمود في مفتاح أساسي أو فهرس نص كامل.
SQL
CREATE TABLE customer_accounts (
id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
fname VARCHAR(50) NOT NULL,
lname VARCHAR(50) NOT NULL,
email VARCHAR(150) NOT NULL UNIQUE,
full_name VARCHAR(101)
GENERATED ALWAYS AS (CONCAT(fname, ' ', lname)) VIRTUAL,
email_domain VARCHAR(100)
GENERATED ALWAYS AS (SUBSTRING_INDEX(email, '@', -1)) STORED
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;