본문 바로가기

Project/Semi-Project

[QT Market] 게시판 구현 댓글 삭제 ORA-02292 오류 해결 과정

00. 문제 상황

 

- 댓글이 없는 글은 삭제 기능이 문제가 없지만, 댓글이 달린다면 해당 게시글은 삭제가 불가능하다.

- ORA-02292 오류로써 "무결성 제약조건"에 위배되기 때문이다.

- integrity constraint violated - child record found

- 왜냐하면 댓글의 PK인 COMMENT_NO는 게시글의 PK인 BOARD_NO를 참조하고 있기 때문에, 부모 테이블이 삭제될 경우 자식 테이블이 삭제 될 수 없다.

- 게시글 삭제 시 댓글도 삭제 될 수 있도록 해야 한다.

- 혹은 게시글 삭제를 해도 데이터베이스에서 삭제되는 것이 아니라, 글의 상태값에 해당하는 컬럼을 추가하고 STATUS를 Y -> N 으로 바꾸는 방법도 있겠다.

 

 

 

01. 문제 해결

- 데이터베이스에서 제약조건을 변경한다.

SELECT CONSTRAINT_NAME, TABLE_NAME, R_CONSTRAINT_NAME
 FROM USER_CONSTRAINTS
 WHERE CONSTRAINT_NAME = '제약조건이름';

- 해당하는 컬럼명 확인 후

 

-- 제약조건 삭제 
ALTER TABLE BOARD_COMMENT DROP CONSTRAINT "BOARD_COMMENT_BOARD_NO_FK";

-- 제약조건 수정
ALTER TABLE BOARD_COMMENT ADD CONSTRAINT BOARD_COMMENT_BOARD_NO_FK FOREIGN KEY(BOARD_NO) REFERENCES BOARD (BOARD_NO) ON DELETE CASCADE;

ON DELETE CASCADE;

붙여서 제약조건을 수정

 

문제 해결 완료!