Oracle DataBase
[ORACLE] cascade 사용법#연결된 테이블 지우는 법
익시토스
2021. 11. 24. 20:35
foriegn key로 서로 연관된 부모 테이블 그리고 자식 테이블을 만들었을 때 부모 테이블을 삭제를 하기 위해서는 자식테이블을 먼저 삭제를 해야한다는 오류가 생긴다.
이는 두 테이블의 데이터가 항상 같은 일관된 값을 가지게 하는 참조무결성의 원칙에 벗어나서 생기는 상황이다.
(참조 무결성의 원칙이란 예를 들어 게시판테이블의 번호인 B_IDX를 댓글테이블이 foreign key로 사용할 때 댓글이 이미 적혀있으면 B_IDX에는 이미 값이 들어가 있으므로 게시판테이블을 바로 삭제할 수 없고 댓글테이블의 해당 댓글을 먼저 삭제 후 게시판 테이블을 삭제할 수 있는 경우이다.)
사용자 개발자 입장에서는 좋은 에러이지만 사용자의 입장에서는 그렇지 못한 에러로 본다.(예를 들어 게시글 속 댓글이 있을 시 게시글 삭제가 불가능해지는 경우가 생긴다.)
이를 해결하기 위해서 DATABASE에서 CASCADE 처리를 해주면 서로 연결된 테이블 중 자식테이블에 값이 들어가 있더라도 참조무결성의 원칙을 무시하고 게시판테이블을 삭제할 수 있다.
방식은 단순히 자식 테이블을 만들 때 foreign key 설정시 뒤에다가 on delete cascade를 적어주면 된다.