首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >第1行中的错误: ORA-01400:无法将NULL插入到("RGAKHAR"."VEHICLE"."VEHICLE_ID")

第1行中的错误: ORA-01400:无法将NULL插入到("RGAKHAR"."VEHICLE"."VEHICLE_ID")
EN

Stack Overflow用户
提问于 2017-01-13 11:49:39
回答 4查看 692关注 0票数 0

我是Oracle的新手,希望在以下方面提供帮助:

  • 我创建了一个名为Vehicle的表,它由两个表中的数据填充:租金(主表)和配置。
  • 当我试图通过从表配置中选择数据插入config_id值时,我发现了错误
  • 错误表示不能接受Vehicle_Id中的空值(该值没有空值)

*注意:由一个序列生成的“租金”表中的Vehicle_Id

代码语言:javascript
复制
create table configuration
(config_id int not null,
SEAT NUMBER(2),
2    3    4  DOORS NUMBER(2),
5  LARGE_BAGS NUMBER(2),
SMALL_BAGS NUMBER(2),
Vehicle_Type Varchar2(25),
primary key(config_id));
6    7    8

Table created.

SQL> SQL>
create sequence config_seq start with 1 increment by 1 nocache;

SQL>
Sequence created.

SQL> SQL>
SQL> insert into configuration (seat,doors,large_bags,small_bags,vehicle_type,config_id)
select x.seat,x.doors,x.large_bags,x.small_bags,x.vehicle_type,config_seq.nextval from (select distinct seat,doors,large_bags,small_bags,vehicle_type from rentals) x;

2 3

代码语言:javascript
复制
12 rows created.

SQL> SQL> SQL> create table Vehicle
(VEHICLE_ID int,
VEHICLE VARCHAR2(25) NOT NULL,
2    3    4  RENTAL_COMMENT CHAR(20),
5  COMPANY_ID int,
config_id int,
Primary key(VEHICLE_ID),
6    7    8  foreign key(company_id) references company(company_id),
9  foreign key(config_id) references configuration(config_id) on delete cascade);

Table created.

SQL>
SQL> insert into Vehicle (vehicle_id,vehicle,rental_comment,company_id)
select vehicle_id,vehicle,rental_comment,company_id from rentals;   2

20 rows created.

SQL> insert into vehicle(config_id) select config_id from configuration;
*
ERROR at line 1:
ORA-01400: cannot insert NULL into ("RGAKHAR"."VEHICLE"."VEHICLE_ID")
EN

回答 4

Stack Overflow用户

发布于 2017-01-13 11:53:38

你对这个错误有什么不理解的?您已经将vehicle.vehicle定义为NOT NULL。您的insert看起来像:

代码语言:javascript
复制
insert into vehicle(config_id)
    select config_id from configuration;

列的默认值是NULL,这是不允许的。你有三个选择:

  • insert中指定一个值。
  • 声明列,以便它接受NULL值。
  • 为列提供一个default值。

有可能要更新现有行。如果是这样的话,您应该正确地插入数据。以下是你的意图的一种可能:

代码语言:javascript
复制
insert into Vehicle (vehicle_id, vehicle, rental_comment, company_id, config_id)
    select r.vehicle_id, r.vehicle, r.rental_comment, r.company_id,
           c.config_id
    from rentals r join
         configuration c
         on r.vehicle_type = c.vehicle_type;  -- just a guess
票数 2
EN

Stack Overflow用户

发布于 2017-01-13 11:56:36

它没有从配置中获取config_id,请确认它,并且它也是vehicle表中的NOT NULL列:

因此,您可以在插入以下语句时使config_id为空或提供任何默认值:

代码语言:javascript
复制
insert into vehicle(config_id) select config_id from configuration;
票数 0
EN

Stack Overflow用户

发布于 2017-01-13 11:58:06

您的表车辆没有空列车辆。在插入数据时使用

SQL>插入车辆( config_id )从配置中选择config_id;

您没有提供不为空的所有字段。

您需要只在第一次输入时插入config_id,或者使用更新查询来填充config_id。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41634013

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档