db/MySQL

[MySQL] FOREIGN KEY

잘할수있을거야 2022. 6. 21. 11:11

FOREIGN KEY 제약 조건을 설정할 때 참조되는 테이블의 필드는 반드시 UNIQUE나 PRIMARY KEY 제약 조건이 설정되어 있어야 한다!!!

 

----------------------외래키 onupdate, ondelete---------------------

외래키 생성시 onupdate, ondelete 설정하지 않을시 기본으로 둘다 RESTRICT 로 설정됨

1. CASCADE
onupdate 
부모 테이블의 값 업데이트시 -> 참조 테이블의 값이 업데이트된 값에 맞게 자동으로 변경됨
ondelete 
부모 테이블의 값 삭제될시 -> 해당 참조 로우가 삭제됨

2. SET NULL
onupdate 
부모 테이블 값 업데이트시 -> 참조 테이블의 값이 null로 변경됨
ondelete 
부모 테이블 값 삭제될시 -> 해당 참조 로우가 null로 변경됨

외래키 제약이 set null로 설정되어있다면 컬럼은 not null로 변경할 수 없다.
<-> not null컬럼이였다면 외래키 제약 set null이 설정될 수 없다

3. RESTRICT 
onupdate 
참조 테이블에서 값을 참조하고 있는 경우 부모 테이블의 값 업데이트 불가
ondelete 
참조 테이블에서 값을 참조하고 있는 경우 부모 테이블의 로우를 삭제 불가