要解决Oracle不允许虚拟列问题,可以考虑以下几种方法:
1. 使用物化视图(Materialized View):将虚拟列的计算逻辑转移到物化视图中,通过定期刷新物化视图来更新虚拟列的值。这样可以在查询时直接使用物化视图中的虚拟列。
2. 使用触发器(Trigger):创建一个触发器,在插入或更新数据时自动计算虚拟列的值,并将其保存到表中。这样,每次查询时就可以直接使用表中的虚拟列。
3. 使用计算列(Computed Column):在表结构中定义一个计算列,通过指定计算表达式来计算虚拟列的值。计算列的值会在插入或更新数据时自动计算并保存在表中,可以直接在查询时使用。
4. 使用视图(View):创建一个视图,将原始表的列和虚拟列一起查询出来。视图可以将虚拟列的计算逻辑封装起来,让用户在查询时直接使用视图中的虚拟列。
根据具体的业务需求和数据库结构,选择合适的方法来解决Oracle不允许虚拟列的问题。