ORA-02291完整性约束

时间:2019-04-05 18:22:42

标签: sql oracle foreign-keys

我已经尝试了所有方法,但是在插入数据时仍然出现错误。

  create table Address(
  AddressID integer primary key,
  StreetnameID integer,
  CountyID integer,
  CityID integer,
  PostcodeID integer,
  DoornumID integer,
  foreign key (StreetnameID) references Streetname,
  foreign key (CountyID) references County,
  foreign key (CityID) references City,
  foreign key (PostcodeID) references Postcode,
  foreign key (DoornumID) references Doornum
);

这是我的地址创建表。下面是我的插入语句失败。

INSERT INTO Address(AddressID, StreetnameID, CountyID, CityID, PostcodeID, DoornumID)
values(seq_AddressID.nextval, 1, 1, 1, 1, 1)

我不知道是什么原因导致此问题生成此错误:

ORA-02291: integrity constraint (ROOT.SYS_C007211) violated - parent key not found

2 个答案:

答案 0 :(得分:2)

外键引用之一不存在。它们都必须存在。如果您命名约束,这将更容易弄清楚:

create table Address (
  AddressID integer primary key,
  StreetnameID integer,
  CountyID integer,
  CityID integer,
  PostcodeID integer,
  DoornumID integer,
  constraint fk_address_StreetnameID foreign key (StreetnameID) references Streetname,
  constraint fk_address_CountyID foreign key (CountyID) references County,
  constraint fk_address_CityID foreign key (CityID) references City,
  constraint fk_address_PostcodeID foreign key (PostcodeID) references Postcode,
  constraint fk_address_DoornumID foreign key (DoornumID) references Doornum
);

约束要求参考表中必须存在相应的行,然后才能将行插入address

答案 1 :(得分:0)

ORA-02291:违反了完整性约束(ROOT.SYS_C007211)-找不到父密钥

对于插入语句,当您尝试插入没有外键约束定义的匹配父级的子级时,此ORA-02291错误很常见。在这种情况下,您需要将父行添加到表中,然后重新插入子表行。

因此请检查您的父表,您没有在其中将试图在此处插入子表的数据放在当前子表中