通过外键找主键

1、执行下面sql语句报错:

SQL>delete from mtrl_export_master where EXPORT_MASTER_ID in ('25956471')
异常信息:ORA-02292: integrity constraint (HRP_1001.FK_MTRL_EXP_REFE_MTRL_EXPORT) violated - child record found

2、下面查看报错中的FK_MTRL_EXP_REFE_MTRL_EXPORT是哪个表的约束;

SQL>  SELECT * FROM all_cons_columns where constraint_name='FK_MTRL_EXP_REFE_MTRL_EXPORT';
   CONSTRAINT_NAME      TABLE_NAME     COLUMN_NAME   
---------- ------------------------------ ------------------------------ 
FK_MTRL_EXP_REFE_MTRL_EXPORT  MTRL_EXPORT_DETAIL  EXPORT_MASTER_ID

3、可见 FK_MTRL_EXP_REFE_MTRL_EXPORT是 MTRL_EXPORT_DETAIL 表上 EXPORT_MASTER_ID 列的约束 ;

4、到此就明白了,原来mtrl_export_master表的EXPORT_MASTER_ID列的数据不能先删除,因为有别的表要引用该列。

这里就是 MTRL_EXPORT_DETAIL 表的 EXPORT_MASTER_ID 列要引用 mtrl_export_master 表的 EXPORT_MASTER_ID 列。

5、主表和子表数据:

SQL> select EXPORT_MASTER_ID from mtrl_export_master where EXPORT_MASTER_ID in ('25956471');
EXPORT_MASTER_ID
----------------
25956471
SQL> select EXPORT_MASTER_ID from MTRL_EXPORT_DETAIL where EXPORT_MASTER_ID in ('25956471');
EXPORT_MASTER_ID
----------------
25956471

本文由 @崔任远[Vip] 发布于 职涯宝 ,未经作者许可,禁止转载,欢迎您分享文章

发表评论

登录后才能评论
小程序
小程序
微信客服
微信客服
QQ客服 建站服务
分享本页
返回顶部