728x90
게시글과 댓글을 구현하면서 ,
댓글테이블에 외래키로 게시글테이블의 BNO를 설정했다.
그 후, 게시글을 삭제하려고 하니 무결성 제약조건 위배로 삭제가 안되고 500에러가 나왔다.
찾아보니 delete cascade 제약조건을 설정해놔야 부모테이블 삭제시 자식테이블도 같이 삭제되는 방법을 찾았다.
alter table 자식테이블명
add constraint 설정할제약조건명
foreign key (외래키로 설정할 키)
references 부모테이블명(외래키로 설정할 키)
on delete cascade;
alter table MP_FILE
add constraint MP_FILE_DELETE
foreign key (BNO)
references MP_BOARD(BNO)
on delete cascade;
alter table mp_reply DROP FOREIGN KEY bno;
이렇게 사용하면 된다.
!!외래키 제약조건을 추가하기 위해선 기존의 제약조건을 삭제 후, 다시 등록해줘야 한다.
drop문으로 삭제시켜주자.
ORA-02298: 제약 (C##ROOT.MP_FILE_DELETE)을 사용 가능하게 할 수 없음 - 부모 키가 없습니다
적용도중 ORA-02298에러가 나왔는데, 오타를 한번 확인해본 후,
오타가 없을 경우엔 자식테이블의 개별적인 삭제등으로 인해 부모테이블과 자식테이블의 키가 매칭이 안되는게 이유다.
자식테이블의 데이터를 delete문으로 날려주고, 다시 제약조건을 등록하면 정상등록 된다.
728x90
'DB > ORACLE' 카테고리의 다른 글
오라클 시퀸스란? (0) | 2021.08.02 |
---|---|
페이징- 서브쿼리,ROW-NUMBER()를 이용한 쿼리작성 (0) | 2021.07.29 |
오라클 계정만들기,sid 확인 (0) | 2021.07.26 |
ORA-12514, TNS:listener does not currently know of service requested in connect descriptor 오류해결 (0) | 2021.07.12 |