添加外键 发生错误!!!!!

sohu98 2003-10-23 10:34:46
SQL> alter table emp
2 add constraint fk_ename
3 foreign key(ename)
4 references bonus(ename);
add constraint fk_ename
*
ERROR 位于第 2 行:
ORA-02298: 无法验证 (SCOTT.FK_ENAME) - 未找到父项关键字


SQL> alter table scott.emp
2 add constraint fk_ename
3 foreign key(ename)
4 references bonus(ename);
add constraint fk_ename
*
ERROR 位于第 2 行:
ORA-02298: 无法验证 (SCOTT.FK_ENAME) - 未找到父项关键字
...全文
297 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
shuipipi 2003-10-24
  • 打赏
  • 举报
回复
应该是数据不满足子父表关系产生的错误,就是像 tsj68(tsj) 所说的那样处理,先删除子表中不在父表里的数据,然后再重新建立外键即可。
daydayupliq 2003-10-24
  • 打赏
  • 举报
回复
外键是对主键的引用,(这个主键可以是别的表的,也可以是自己表的);
主键是唯一的,而且不能为空;


理论的东西真烦~
smallcrocodile 2003-10-24
  • 打赏
  • 举报
回复
关联的表已经有数据了把
tsj68 2003-10-24
  • 打赏
  • 举报
回复
emp表ename字段中存在某些bonus表ename字段中没有的记录。
先删掉这些记录:
sql>delete emp e where not exists (select null from bonus b where e.name=b.name);
然后才可以定义外键.
KingSunSha 2003-10-24
  • 打赏
  • 举报
回复
外键定义反了吧?按照常识,应该是从bonus指向emp表才对。

alter table scott.bonus
add constraint fk_ename
foreign key(ename)
references emp(ename);
welyngj 2003-10-23
  • 打赏
  • 举报
回复
bonus表的ename不是primary key

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧