ORA-54013: INSERT operation disallowed on virtual columns

文档解释

ORA-54013: INSERT operation disallowed on virtual columns

Cause: Attempted to insert values into a virtual column

Action: Re-issue the statment without providing values for a virtual column

这个错误代表无效的插入操作,当以INSERT操作对虚拟列进行插入时,Oracle数据库会抛出这个错误提示。

报此错误的正常原因是:**虚拟列是只读列,不能直接插入,也就是说SQL语句中不能直接使用虚拟列**,虚拟列用来派生特定的值,而不是用来存储信息,是一种特殊的一种列。比如我们在Oracle中如果有一个表定义了一个虚拟列,但是你仍调用INSERT语句,那么就会就会抛出这个错误:ORA-54013:INSERT operation disallowed on virtual columns。

官方解释

Oracle 报错ORA-54013意味着用户使用INSERT语句想插入值到虚拟列,但是由于虚拟列是只读的,所以会直接报这个错。

常见案例

比如有一个表TEST_TABLE,我们定义列CURDATE虚拟列,如果直接调用:

“`sql

insert into TEST_table values(3,sysdate);

“`

但是CURDATE是一个虚拟列,就会直接报这个错误。

正常处理方法及步骤

1. 不要直接使用INSERT语句插入值到虚拟列,虚拟列是只读的,不能进行插入操作

2. 如果要使用虚拟列,可以选择在触发器中,用BEFORE或AFTER INSERT触发器把虚拟列的值取出来,进行操作

3. 还可以通过视图展示虚拟列,将原表中的物理列转换为虚拟列,从而实现类似查询操作。

你可能感兴趣的