通過外來鍵找主鍵

czxin788發表於2020-11-22

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


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/28916011/viewspace-2735920/,如需轉載,請註明出處,否則將追究法律責任。

相關文章