当前位置: 首页 > 知识库问答 >
问题:

SQL Developer-完整性约束,未找到父项(插入值时)

韦睿
2023-03-14

我知道,为了在依赖外键的表中插入值,您需要在该表的主键中包含数据。

以下是我的限制:

 ALTER TABLE DIDACT
   MODIFY (CONSTRAINT id_prof_fk FOREIGN KEY(id_prof) REFERENCES profs (id_prof));

 ALTER TABLE DIDACT
   MODIFY (CONSTRAINT id_course_fk FOREIGN KEY(id_course) REFERENCES courses (id_course));

接下来,我在profs和courses表中插入值:

INSERT INTO courses VALUES ('21', 'Logic', 1, 1, 5);
INSERT INTO courses VALUES ('22', 'Math', 1, 1, 4);
INSERT INTO courses VALUES ('23', 'OOP', 1, 2, 5);
INSERT INTO courses VALUES ('24', 'DB', 2, 1, 8);
INSERT INTO courses VALUES ('25', 'Java', 2, 2, 5);

INSERT INTO profs VALUES ('p1', 'Mary', 'Banks', 'Prof');
INSERT INTO profs VALUES ('p2', 'Francis', 'Steven', 'Conf');
INSERT INTO profs VALUES ('p3', 'John', 'Jobs', 'Prof');
INSERT INTO profs VALUES ('p4', 'Alex', 'Brown', 'Prof');
INSERT INTO profs VALUES ('p5', 'Dan', 'Lovelace', 'Lect');
INSERT INTO profs VALUES ('p6', 'Roxanne', 'Smith', 'Conf');

然后我尝试填充DIDACT表:

INSERT INTO didact VALUES ('p1','21');
INSERT INTO didact VALUES ('p3','21');
INSERT INTO didact VALUES ('p5','22');

但这种情况会发生:

插入didact值('p1','21')错误报告-SQL错误:ORA-02291:违反完整性约束(user.ID\u COURSE\u FK)-未找到父项02291。00000-“违反完整性约束(%s.%s)-未找到父项”*原因:外键值没有匹配的主键值*操作:删除外键或添加匹配的主键。

这些是我的表格,以防有帮助:

CREATE TABLE courses(
  id_course CHAR(2),
  course_name VARCHAR2(15),
  year NUMBER(1),
  semester NUMBER(1),
  credits NUMBER(2)
  )

CREATE TABLE profs(
  id_prof CHAR(4),
  name CHAR(10),
  surname CHAR(10),
  grade VARCHAR2(5)
  )

CREATE TABLE didact(
  id_prof CHAR(4),
  id_course CHAR(4)
  )

我为此挣扎了大约一个小时,但我仍然没有找到我的错误。

谢谢你。

共有1个答案

越景天
2023-03-14

您的表中似乎有不同的id\u课程格式。在didact中是id\u课程字符(4),在courses中是id\u课程字符(2)

由于使用固定长度类型,didact中的值将与courses中的值相差两个空格。

 类似资料:
  • 我被要求解决的最初问题是: 创建两个表:Employee:empID(PK)、empFname、empLname、deptID(FK)和Department:deptID(PK)、deptName、chairID。chairID是Employee表中的empID。在Department表中至少插入3行,在Employee表中至少插入6行。更新chairID时创建触发器,强制执行以下业务规则:一名员

  • 我试图为和创建会话,这两个表都与相同的外键关联到登录表-但是当我为创建种子时,我得到了错误,在我的另一个问题在这个链接中,我没有以最好的方式解释,但得到了一些关于使用(党-角色-关系模型)和这段代码下面他更多的想法有关已解决的问题链接 创建表和主键 创建表和主键 创建表以及主键和外键 使用表为管理员创建会话的过程: 使用表为用户创建会话的过程: 创建管理会话时,我收到一个错误 我做错了什么?

  • 问题内容: 嗨,我正在Oracle SQL开发人员中开发数据库,​​试图从另一个表访问foriegn键。我目前正在使用以下CREATE语句创建的ItemOrdered表 如您所见,我具有以下前键Ords和BeltID。 现在,当我尝试运行以下语句时 它给了我以下错误 违反-找不到父密钥02291。00000-“违反完整性约束(%s。%s)-找不到父密钥” 如果需要,我已经提供了Ords CREAT

  • 我得到了“完整性约束(SYSTEM。FK_FACILITY)违反了父密钥未找到”错误,尽管主键在上一个表中已经明确定义。 我的确切错误是 我只想将值添加到表中,但我无法这样做。。。如果有人能帮我,那就太好了!

  • 我遇到了一些SQL外键的问题。 下面是我的表和插入SQL。 SQL ORA-02291:违反完整性约束-未找到父键 我不知道为什么我的外键是错的?

  • 我尝试按如下方式创建父表和子表: 我创建了两个程序来插入记录: 我已经创建了SSIS包来调用这两个过程。父记录插入成功。但是对于子表过程,我得到以下错误: “[Execute SQL Task]错误:执行查询”BEGIN GetSourceLogId(?,?输出);终止失败,出现以下错误:“违反了ORA-02291:完整性约束(PATIENTMDR.FK_SOURCELOG_PROCESSLOG)