FOREIGN KEY에 의한 ACTIONS
ON DELETE
부모 테이블의 행이 삭제될 때 자식 테이블에 일어나는 일들
- CASDADE : 부모 삭제 시 자식도 삭제
- SET NULL : 부모 삭제 시 자식은 NULL로 설정
- SET DEFAULT : 부모 삭제 시 자식은 기본값 설정
- RESTRICT : 자식이 없는 경우만 부모 삭제
ON INSERT
자식 테이블의 행이 입력될 때 부모 테이블 행과 관련하여 처리하는 일들
- AUTOMATIC : 부모가 없을 때 부모 입력 후 자식 입력
- SET NULL : 부모가 없을 때 자식의 FK를 NULL로 입력
- SET DEFAULT : 부모가 없을 때 자식의 FK를 기본값 설정
- DEPENDENT : 입력하려는 값이 부모의 PK에 있는 경우에만 입력 가능하게 설정
CASCADE와 SET NULL
- ON DELETE CASCADE
- 부모 테이블에서 PRIMARY 값이 삭제될 경우, 하위 테이블의 REFERENCE 값이 삭제
- 이 경우, REFERENCE 값 뿐만 아니라 관련 투플(행)이 함께 삭제됨
- ON UPDATE CASCADE
- 부모 테이블에서 PRIMARY 값이 수정될 경우, 하위 테이블의 REFERENCE 값이 상위 테이블의 수정 값을 가져옴
- ON DELETE SET NULL & ON UPDATE SET NULL
- 부모 테이블에서 PRIMARY 값이 수정 또는 삭제될 경우, 하위 테이블의 REFERENCE 값이 NULL로 변경
CREATE TABLE 테이름이름1
(칼럼1 INTEGER PRIMARY KEY, 칼럼2 INTEGER);
CREATE TABLE 테이블이름2
(칼럼3 INTEGER PRIMARY KEY
,칼럼1 INTEGER REFERENCES 테이블이름1(칼럼1) ON DELETE CASCADE);
CREATE TABLE 테이블이름3
(칼럼4 INTEGER PRIMARY KEY
, 칼럼3 INTEGER REFERENCES 테이블이름2(칼럼3) ON DELETE SET NULL);