2014-10-02 96 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列(当然表不同的名称):

一列存储此表的主键,而另一列存储作为到其他表的链接的外键。

谢谢大家的回复,那些让我想知道我在做什么错。

谢谢吨:)