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;
붙여서 제약조건을 수정
문제 해결 완료!
'Project > Semi-Project' 카테고리의 다른 글
[QT Market] 최종 발표에 대한 FeedBack (0) | 2021.12.27 |
---|---|
[QT Market] 마무리 작업 (0) | 2021.12.25 |
[QT Market] 게시판 기능 구현 중 글 수정 NULL 이슈 해결 과정 (0) | 2021.12.19 |
[QT Market] 게시판 기능 구현 중 글 작성 이슈 해결 과정 (0) | 2021.12.18 |
[QT Market] 게시판 분담 완료 (0) | 2021.12.16 |