【问题标题】:Got an error make DDL & insert data on some cases in oracle11g在 oracle11g 中的某些情况下进行 DDL 和插入数据时出错
【发布时间】:2020-08-10 16:03:52
【问题描述】:

我创建了一个训练表和要放入其中的数据。

DDL

It`s privacy data so I deleted it

表创建正常,但是从company后面插入数据,也就是把值放入员工数据时出现如下错误。

错误 - ORA-02291:违反完整性约束 (SYSTEM.SYS_C007017) - 未找到父密钥

我在创建表格时是否设置了错误的值? 我的桌子符合条件吗?

修改前应该插入哪些数据? ..

感谢您的阅读

我的版本 -> oracle 11g

【问题讨论】:

  • "对于插入语句,当您尝试插入没有匹配父项的子项时,此 ORA-02291 错误很常见,如外键约束所定义。在这种情况下,您需要添加父行到表中,然后重新插入您的子表行。"
  • @Know-nothing 我输入了company表的数据值,但是不知道为什么没有输入员工数据值。作为参考写入的公司表的城市列存在。

标签: sql database oracle oracle11g sqlplus


【解决方案1】:

表 COMPANY 的主键是 COMPANY_NAME,您为其插入了以下值:

  • 三星
  • LG
  • 浦项制铁
  • 起亚
  • SK

表 EMPLOYEE 有一个外键 (city) references company,这意味着 EMPLOYEE.CITY 中的值必须与 COMPANY.COMPANY_NAME 中的现有值匹配。

您正试图将“Soeul”插入 EMPLOYEE.CITY。由于这与 COMPANY.COMPANY_NAME 的任何值都不匹配,因此您会违反约束。

【讨论】:

  • “首尔”在哪里?...我看到的一切都是“首尔”
  • @beenz 这里是“Soeul”:insert into employee values ('Youngbin', 'S-1', 'Seoul')
猜你喜欢
  • 1970-01-01
  • 2017-08-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-04-09
  • 1970-01-01
  • 2014-12-11
相关资源
最近更新 更多