ORA-54013: 不允許對(duì)虛擬列執(zhí)行 INSERT 操作
這是Oracle 11 的新特性 ―― 虛擬列。
在以前的Oracle 版本,當(dāng)我們需要使用表達(dá)式或者一些計(jì)算公式時(shí),我們會(huì)創(chuàng)建數(shù)據(jù)庫(kù)視圖,如果我們需要在這個(gè)視圖上使用索引,我們會(huì)創(chuàng)建基于函數(shù)的索引。現(xiàn)在Oracle 11允許我們直接在表上使用虛擬列來(lái)存儲(chǔ)表達(dá)式。虛擬列的值是不存儲(chǔ)在磁盤的,它們是在查詢時(shí)根據(jù)定義的表達(dá)式臨時(shí)計(jì)算的。我們不能往虛擬列中插入數(shù)據(jù),我們也不能隱式的添加數(shù)據(jù)到虛擬列,我們只能使用物理列來(lái)插入數(shù)據(jù)。然后可以查詢虛擬列的值,表達(dá)式是在查詢的時(shí)候即時(shí)計(jì)算的。索引和約束同樣可以應(yīng)用在虛擬列上,我們也可以為虛擬列創(chuàng)建外鍵。
下面使用的數(shù)據(jù)表名是:APEX_CW_月結(jié)賬單明細(xì)詳情表
使用oracle中的命令窗口,輸入語(yǔ)句查看表結(jié)構(gòu):SQL>desc APEX_CW_月結(jié)賬單明細(xì)詳情表;
執(zhí)行后看到如下表結(jié)構(gòu):
Name Type Nullable Default Comments -------------------- ------------ -------- ---------------------------- -------- PK_MONTHBILLDETAILID VARCHAR2(35) FK_MONTHBILLID VARCHAR2(18) Y BARCODE VARCHAR2(15) Y CUSTCODE VARCHAR2(8) Y CUSTNAME VARCHAR2(50) Y EXCHARGE NUMBER(18,2) Y CITYCODE VARCHAR2(3) Y EXPORTDAY DATE Y ORICHARGE NUMBER(18,2) Y INCOMEDCHARGE NUMBER(18,2) Y ISHANDLED VARCHAR2(1) Y PAYERID VARCHAR2(8) Y PAYERNAME VARCHAR2(50) Y MANAGECITY VARCHAR2(10) Y CITYNAME VARCHAR2(50) Y DESTINCITY VARCHAR2(3) Y DESTINCITYNAME VARCHAR2(50) Y ITEM VARCHAR2(6) Y SERVERTYPE VARCHAR2(1) Y DESTINCOUN CHAR(2) Y ORICURRENCY VARCHAR2(3) Y TAXAMOUNT FLOAT(63) Y CHARGEWEIGHT NUMBER(10,3) Y EXPORTCITY VARCHAR2(3) Y STRFD1 VARCHAR2(20) Y CREATETIME DATE Y MONTHBILLTYPE VARCHAR2(2) Y SUBSTR("FK_MONTHBILLID",1,1) 從上面看到最后一行的字段 ‘MONTHBILLTYPE' 是通過(guò)第二行的字段 ‘FK_MONTHBILLID' 得到的,所以如果對(duì)該表中這個(gè)字段 ‘MONTHBILLTYPE' 進(jìn)行插入(賦值)操作就會(huì)報(bào)出異常。
如果有其他對(duì)表的操作報(bào)出這種異常,原因大致如此。
以上所述是小編給大家介紹的Oracle數(shù)據(jù)庫(kù)ORA 54013錯(cuò)誤的解決辦法,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)武林網(wǎng)網(wǎng)站的支持!
新聞熱點(diǎn)
疑難解答
圖片精選