2014-10-02 94 views
0

我嘗試使用下面的示例查詢做一個很簡單的事情(不能發佈的實際查詢:()的Oracle 11g 「INSERT INTO SELECT」 行爲不端

INSERT INTO學生(ID,roll_number,Student_name ) SELECT 1,2, 'MYNAME' FROM DUAL;

的ID列有NOT NULL約束集當我執行此查詢,我得到了以下錯誤: SQL錯誤:ORA-01400:無法將NULL插入。 (「SCHEMA」。「STUDENTS」。「ID」) 01400. 00000 - 「無法將NULL插入(%s)」

ID列的數據類型爲NUMBER。

任何人都可以幫助什麼可能是問題。

在此先感謝。

+0

你能告訴我們一個學生表的描述嗎?我沒有看到你的代碼在語法上沒有錯。 – mmmmmpie 2014-10-02 17:47:53

+0

該錯誤幾乎不言自明 - 您正試圖將空值插入到非空列中。因爲它建議,看看你的查詢沒有插入部分,看看你實際上試圖插入 - 其中一些值爲空。 – 2014-10-02 20:34:26

回答

0

我會做的是單獨運行Select部分,並查看返回的數據。即

Select First_Field, Second_Field, 'Bob' 
From MyTable 
Where First_Field = NULL; 

什麼給你。你也可以這樣做:

Select count(*) 
From MyTable 
Where coalesce(First_Field,1) =1; 

順便說一句,你說你的領域是一個數字,但只是供參考。插入到varchar2字段中的''被解釋爲NULL。發現了艱辛的道路

+0

當我單獨運行Select查詢時,我得到以下輸出: 1 2 MyName 1 rows selected 此外,結果也是一樣的 – 2014-10-03 04:32:02

0

好像我創建回答我自己的問題的習慣......

當我拿着仔細看看我發現有與兩個ID列(當然表不同的名稱):

一列存儲此表的主鍵,而另一列存儲作爲到其他表的鏈接的外鍵。

謝謝大家的回覆,那些讓我想知道我在做什麼錯。

謝謝噸:)