همانطور که می دانید قابلیت Virtual Column در نسخه 11.1 معرفی شده است که به کاربران این امکان را میدهد تا مقادیر ستون را بدون ذخیره فیزیکی آنها در دیتابیس محاسبه کنند. این ستونها بر اساس یک عبارت (Expression) تعریف میشوند که این عبارت می تواند مقادیر ثابت، توابع SQL، ستونهایی از همان جدول و … باشد و مقادیرشان در زمان اجرا (On-the-Fly) محاسبه میشود. بنابرین این ستونها فضایی را اشغال نمی کنند.
SQL> create table TBL_EMP_VIRTUAL_COL (id number, PRE_TAX_SAL number, NET_SAL NUMBER GENERATED ALWAYS AS (PRE_TAX_SAL* 0.10)); Table created SQL> insert into TBL_EMP_VIRTUAL_COL(id, PRE_TAX_SAL) values(1,6523); 1 row inserted SQL> select * from TBL_EMP_VIRTUAL_COL; ID PRE_TAX_SAL NET_SAL ---------- ----------- ---------- 1 6523 652.3
همانطور که مشاهده میکنید، مقدار ستون NET_SAL به صورت لحظهای و در زمان اجرا محاسبه شده است.
در نسخه 23ai (نسخه 23.7)، اوراکل ویژگی جدیدی به نام Materialized Expression Columns معرفی کرده که مشابه ستونهای مجازی است، با این تفاوت که مقادیر ستونها در هنگام اجرای دستورات DMLای مانند insert، update و delete محاسبه و ذخیره میشود.