On delete Cascade
부모 릴레이션이 삭제될 경우 자식 릴레이션도 같이 삭제되는 제약조건을 말한다.
*적용 방법*
1.테이블 생성 시 설정
CONSTRAINT 외래키 이름 FORIEGN KEY(외래키로 설정할 컬럼) REFERENCES 부모 테이블(참조하는 컬럼)
ON DELETE CASCADE;
2.테이블 생성 후 설정 수정
이미 외래키를 설정한 상태에서 수정해야 한다면 다음과 같이 기존 외래키 삭제 후 재설정하면 된다.
ALTER TABLE 자식테이블 DROP FOREIGN KEY 외래키 이름;
ALTER TABLE 자식테이블
ADD CONSTRAINT 외래키 이름 FORIEGN KEY(외래키로 설정할 컬럼) REFERENCES 부모 테이블(참조하는 컬럼) ON DELETE CASCADE;
*예시*
위 : 부모 테이블 / 아래 : 자식 테이블
위의 부모 테이블에서 B_NUM이 5인 튜플을 삭제했을 때,
아래 자식 테이블에서도 B_NUM이 5인 튜플이 삭제된다.
On delete set null
부모 릴레이션이 삭제될 경우 자식 릴레이션의 값이 null로 바뀌는 제약조건을 말한다.
*적용 방법*
1.테이블 생성 시 설정
CONSTRAINT 외래키 이름 FORIEGN KEY(외래키로 설정할 컬럼) REFERENCES 부모 테이블(참조하는 컬럼)
ON DELETE SET NULL;
2.테이블 생성 후 설정 수정
이미 외래키를 설정한 상태에서 수정해야 한다면 다음과 같이 기존 외래키 삭제 후 재설정하면 된다.
ALTER TABLE 자식테이블 DROP FOREIGN KEY 외래키 이름;
ALTER TABLE 자식테이블
ADD CONSTRAINT 외래키 이름 FORIEGN KEY(외래키로 설정할 컬럼) REFERENCES 부모 테이블(참조하는 컬럼) ON DELETE SET NULL;
*예시*
위 : 부모 테이블 / 아래 : 자식 테이블
위의 부모 테이블에서 튜플(회원 정보)을 삭제했을 때,
아래 자식 테이블에서 해당 회원의 ID가 NULL로 변한다.