首页 > 解决方案 > ORA-02291 完整性约束

问题描述

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

  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

标签: sqloracleforeign-keys

解决方案


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

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.


推荐阅读