1 minute read

FOREIGN KEY에 의한 ACTIONS

  1. ON DELETE 부모 테이블의 행이 삭제될 때 자식 테이블에 일어나는 일들
    • CASDADE : 부모 삭제 시 자식도 삭제
    • SET NULL : 부모 삭제 시 자식은 NULL로 설정
    • SET DEFAULT : 부모 삭제 시 자식은 기본값 설정
    • RESTRICT : 자식이 없는 경우만 부모 삭제
  2. ON INSERT 자식 테이블의 행이 입력될 때 부모 테이블 행과 관련하여 처리하는 일들
    • AUTOMATIC : 부모가 없을 때 부모 입력 후 자식 입력
    • SET NULL : 부모가 없을 때 자식의 FK를 NULL로 입력
    • SET DEFAULT : 부모가 없을 때 자식의 FK를 기본값 설정
    • DEPENDENT : 입력하려는 값이 부모의 PK에 있는 경우에만 입력 가능하게 설정

CASCADE와 SET NULL

  1. ON DELETE CASCADE
    • 부모 테이블에서 PRIMARY 값이 삭제될 경우, 하위 테이블의 REFERENCE 값이 삭제
    • 이 경우, REFERENCE 값 뿐만 아니라 관련 투플(행)이 함께 삭제됨
  2. ON UPDATE CASCADE
    • 부모 테이블에서 PRIMARY 값이 수정될 경우, 하위 테이블의 REFERENCE 값이 상위 테이블의 수정 값을 가져옴
  3. 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);