MySQL Foreign keys의 On Delete CASCADE 설정과 동작방법

2023. 12. 29. 15:56Database/MySQL

728x90
반응형

 

728x90

 

 

 

 

 

MySQL foreign keys 제약 조건

제약조건 테이블간의 링크를 파괴하는 작업을 방지하는데 사용됩니다. 

 

Foreign keys가 있는 테이블을 자식 테이블이라고 하며

기본 키를 사용하여 참조하고 있는 테이블을 부보 테이블이라고 합니다.

 

 


Foreign keys 설정하는 방법

 

 

1. 테이블 설정창 하단의 Foreign keys 탭을 클릭합니다.

 

 

 

 

 

 

2. Foreign key Name을 구분하기 쉽게 설정하고 Refernced Table(참조할 테이블)의 컬럼을 선택합니다.


 

 

 

 
3. 오른쪽 상자로 넘어와 Foreign key를 설정할 컬럼을 선택하고 Referenced Column(참조할 컬럼)을 선택합니다.
 
 
 
 
4. 앞서 두 상자의 설정이 끝나면 오른쪽 맨 끝에 Foreign Key Options에 On Delete에서 CASCASED를 선택 후 apply 합니다.

 

 

 

* Foreign Key 설정한 것은 아래 Indexes 탭에서도 확인 가능이 가능합니다.

 

 

CASCADE는 단어 그대로 종속의 의미로 기본키와 외래키의 관계로 참조되는 데이터가 연동되어 부모테이블의 row에 Delete 또는 Update 명령어가 적용될 때, 자동적으로 자식 테이블의 row에 반영되는 것을 의미합니다.

 

위에서 설정한 Foreign Key On Delete CASCADE는

기본키 테이블의 row가 삭제되면 연결된 외래키 테이블의 row도 삭제되게끔 설정한 것입니다.

 

예를 들어 어느 서비스의 회원이 탈퇴하는 경우 해당 회원의 데이터가 모두 삭제 되듯이

User 테이블의 id와 photo 테이블의 userId가 각각 기본키와 외래키로 연결되어 있고 User 테이블의 id가 삭제되면 연결된 photo 테이블의 해당 UserId의 데이터가 삭제되는 것과 같습니다. 

 

 


 

Foreign Key의 특징!

 

1. 데이터 insert시 데이터의 형식만 맞으면 다 들어갑니다.

 

2. Foreign Key를 등록하여 참조시키면 다른 테이블과 연결로 잘못된 데이터가 들어오는 경우 에러창이 뜨면서 저장이 안되게 할 수 있습니다.

 

3. Foreign Key의 On Delete CASCADE를 사용하면 데이터 삭제시 선택된 데이터와 참조 연결된 모든 데이터가 삭제됩니다.

 

 

 

반응형

 

728x90
반응형