Notice
Recent Posts
Recent Comments
Link
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Archives
Today
Total
관리 메뉴

코딩에 손 담그기

ORA-02292 코드. 그리고 fk 제약조건 추가하기 본문

코딩/JAVA

ORA-02292 코드. 그리고 fk 제약조건 추가하기

한발자국 2022. 1. 19. 13:02

주문 기본 정보과 주문 목록 내용을 삭제하려는데 에러가 뜸 

SQL> delete from order_info;

ERROR at line 1:
ORA-02292: integrity constraint (HR.ORDER_LINE_NO_FK) violated - child record
found

 

음...? 뭐가 잘못되었나...? 수업은 진행중이고 빨리 삭제하고 커밋해야하는데 동공지진....

 

얼른 구글링하는데 다양한 방법은 나오고, 하지만 테이블명들이 다들 다르고 조급해져서 눈에는 안들어오고ㅠ

오라클 켜서 테이블들 제약조건을 확인해보는데 

 

--주문 기본테이블
CREATE TABLE order_info(
  order_no NUMBER,
  order_id VARCHAR2(10) NOT NULL  CONSTRAINT order_id_fk REFERENCES customer(id),
  order_dt DATE NOT NULL,
  CONSTRAINT order_info_no_pk PRIMARY KEY(order_no)
);

 

order_info 테이블에 order_id가 fk참조를 못해서 생기는 문제였다. 

난 분명 테이블 생성할때 제약조건을 걸었는데.............!!!라고 생각했지만, 

복습할때 customer 테이블을 삭제하고 다시 만드는 과정에서 customer 테이블의 id를 pk설정을 하지못했었고, 그로인해 이전에 문제가 한 번 있었기 때문에...이게 문득 떠올랐다. 

 

결국 이 문제로 order_info 테이블 생성할때 order_id값이 fk 제약조건이 안걸렸던것. 

 

급하게 제약조건을 추가하려는데, 계속 에러가 발생한다...

 

추가한 조건은

ALTER TABLE order_info 
ADD CONSTRAINT order_id_fk FOREIGN KEY(order_id) REFERENCES customer(id)

오류 보고 -
ORA-02298: cannot validate (HR.ORDER_ID_FK) - parent keys not found
02298. 00000 - "cannot validate (%s.%s) - parent keys not found"
*Cause:    an alter table validating constraint failed because the table has
           child records.
*Action:   Obvious

자식테이블에 문제가 있는듯하여, 다른 방법을 더 찾아야하지만..!

 

우선 나는 order_info 와 order_line의 데이터내용을 삭제하는게 목적이였기때문에 가장 자식인 테이블의 데이터부터 지웠다. 

 

order_line테이블 내용 지우고, order_info테이블 내용 지우고나니 

제약조건 추가가 가능했다...ㅠㅠㅠㅠ

 

타이밍이 맞아서 다행이었지만, 만약 데이터를 그대로 두고 제약조건을 추가해야했다면? 

그때는 다른 방법을 찾아야 했을 것이다. 

 

다음엔 그 방법이 무엇인지 알아보기!!

Comments