程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Oracle數據庫 >> Oracle教程 >> Oracle數據庫:ORA-54013錯誤解決辦法,oracleora-54013

Oracle數據庫:ORA-54013錯誤解決辦法,oracleora-54013

編輯:Oracle教程

Oracle數據庫:ORA-54013錯誤解決辦法,oracleora-54013


ORA-54013: 不允許對虛擬列執行 INSERT 操作

這是Oracle 11 的新特性 —— 虛擬列。

在以前的Oracle 版本,當我們需要使用表達式或者一些計算公式時,我們會創建數據庫視圖,如果我們需要在這個視圖上使用索引,我們會創建基於函數的索引。現在Oracle 11允許我們直接在表上使用虛擬列來存儲表達式。虛擬列的值是不存儲在磁盤的,它們是在查詢時根據定義的表達式臨時計算的。我們不能往虛擬列中插入數據,我們也不能隱式的添加數據到虛擬列,我們只能使用物理列來插入數據。然後可以查詢虛擬列的值,表達式是在查詢的時候即時計算的。索引和約束同樣可以應用在虛擬列上,我們也可以為虛擬列創建外鍵。

 

下面使用的數據表名是:APEX_CW_月結賬單明細詳情表

使用oracle中的命令窗口,輸入語句查看表結構:SQL>desc APEX_CW_月結賬單明細詳情表;

執行後看到如下表結構:

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’ 是通過第二行的字段 ‘FK_MONTHBILLID’ 得到的,所以如果對該表中這個字段 ‘MONTHBILLTYPE’ 進行插入(賦值)操作就會報出異常。

如果有其他對表的操作報出這種異常,原因大致如此。

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved