신입 개발자가 되기 위해 공부했던 독학 자료들/Oracle

[오라클] 서로 다른 두 개의 테이블에 있는 값 동시에 삭제 하기 (오라클 외래키 on delete cascade 사용하기)

Seojoo21 2022. 3. 17. 12:15

 

출처:  https://wakestand.tistory.com/205

 

오라클 cascade 사용방법 및 예제

오라클에서 cascade란 두 테이블을 연결해서 PK를 가지고 있는 쪽의 값을 삭제하면 FK로 연결된 값이 동시에 삭제되게 하는 옵션이다 예제에서는 부모 역할을 할 MOTHER_TABLE에 테이블 생성과정 중 CON

wakestand.tistory.com

 

1. 현재 내 개인 프로젝트에 회원 정보 테이블(tbl_member)과 회원 권한(tbl_member_auth) 테이블이 따로 있는데 회원 탈퇴 시에 tbl_member에서 PK인 회원 아이디 userid 가 삭제되면 tbl_member_auth의 PK이자 tbl_member와는 FK로 연결되어있는 userid 또한 함께 삭제하도록 쿼리문을 작성하고 싶었다.

 

2. 이때 사용할 수 있는 기능이 바로 'CASCADE'이다. 오라클에서 CASCADE란 두 테이블을 연결해서 PK를 가지고 있는 쪽의 값을 삭제하면 FK로 연결된 값이 동시에 삭제되게 하는 옵션이다. 

 

3. 테이블을 처음 생성할때 CASACDE 조건을 추가할 수도 있고 나중에 필요시 추가할 수도 있다.

 

===============================================================================

 

1. 내 개인 프로젝트의 경우 이미 두 테이블이 외래키로 연결되어 있었기 때문에 ON DELETE CASCADE를 추가하려고 하자 오류가 발생하였다. 그래서 일단 아래와 같이 기존의 외래키 연결을 끊어주고, 

 

2. 아래와 같이 다시 외래키를 연결해주면서 ON DELETE CASCADE 를 추가해주었다. 

 

3. 그리고 TBL_MEMBER에서 테스트용 아이디 값 하나를 삭제 해보았고, 

 

4. TBL_MEMBER_AUTH 에서도 동일하게 삭제 처리가 된 것을 확인할 수 있었다.

 

 

그 외 출처:

http://www.gurubee.net/article/50056

https://seeminglyjs.tistory.com/272