[SQL] 참조무결성 및 CASCADE

Suzume·2023년 11월 14일
0

DataBase

목록 보기
7/16
post-thumbnail

🎇 참조무결성이란?

DB에서 데이터의 일관성을 유지하기 위한 조건이며,
SQL 명령어 중에선 이를 관리하고 지원하는 명령어가 존재한다.
기본키(PK)와 외래 키 간의 관계가 항상 같게 유지되도록 보장해야한다.

🎇 Why CASCADE?

만약, 학과 테이블에서 subject 칼럼의 'math'값을 삭제하거나 이름을 바꾸고자 한다.
이를 참조하는 값인 외래키(FK)가 존재하면, DBMS는 강제로 이를 막는다.
subject 값이 삭제되거나 변경되는 경우 참조 무결성이 깨지기 때문이다.
그렇다면, math라는 과목이름을 변경하거나 삭제해야하면 어떻게할까..? 😂
이 때, 바로 CASCADE Action을 사용한다.

🎇 CASCADE란?

CASCADE 옵션을 통해 참조 무결성이 깨지는 것을 허용하며,
관련된 모든 값을 업데이트하거나 삭제할 수 있음

🎇 CASCADE 설정

  • 여기서 부모테이블은 기본 키(PK)를 가진 테이블, 자식테이블은 다른 테이블의 외래키를 참조, 부모테이블의 PK를 FK로 사용
  • FK를 ON DELETE, ON UPDATE로 제약해보자!!

🎃 ON DELETE 옵션

  1. ON DELETE CASCADE;: 부모 테이블의 특정 레코드가 삭제될때, 해당 레코드를 외래 키로 참조하는 모든 자식 테이블의 관련 레코드도 함께 삭제
  2. ON DELETE SET NULL;: 부모 테이블에서 레코드가 삭제되면, 자식 테이블에서 해당 외래 키를 참조하던 열의 값을 NULL로 설정
  3. ON DELETE SET DEFAULT;: 부모 테이블에서 레코드가 삭제되면, 자식 테이블에서 해당 외래 키를 참조하던 열의 값을 기본값으로 설정
  4. ON DELETE NO ACTION; or ON DELETE RESTRICT;: 부모 테이블에서 레코드가 삭제되지 않도록 방지합니다. 참조 키를 가진 레코드가 있으면 삭제를 허용하지 않음

🎃 ON UPDATE 옵션

  1. ON UPDATE CASCADE;: 부모 테이블의 기본 키 값이 변경될 때, 해당 값을 외래 키로 참조하는 모든 자식 테이블의 관련 레코드도 함께 업데이트
  2. ON UPDATE SET NULL;: 부모 테이블에서 기본 키 값이 업데이트되면, 자식 테이블에서 해당 외래 키를 참조하던 열의 값을 NULL로 설정
  3. ON UPDATE SET DEFAULT;: 부모 테이블에서 기본 키 값이 업데이트되면, 자식 테이블에서 해당 외래 키를 참조하던 열의 값을 기본값으로 설정
  4. ON UPDATE NO ACTION; or ON UPDATE RESTRICT;: 부모 테이블에서 기본 키 값이 업데이트되지 않도록 방지합니다. 참조 키를 가진 레코드가 있으면 업데이트를 허용하지 않음
profile
미네르바의 부엉이는 황혼이 저물어야 그 날개를 편다.

0개의 댓글