데이터베이스/데이터베이스 공부

외래키 제약 조건 설정(ON DELETE, ON UPDATE, 참조 작업, CASCADE, SET NULL, SET DEFAULT, RESTRICT, NO ACTION)

아밍나 2022. 8. 29. 23:20
728x90

외래키

외래키가 설정된 테이블에 레코드를 입력하면 기준이 되는 테이블의 내용을 참조해서 레코드가 입력됨.
→ FOREIGN KEY 제약 조건을 설정한 필드를 외래키라고 부른다. (한 테이블을 다른 테이블과 연결해줌.)

 

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


- CREATE 문으로 FOREIGN KEY 제약 조건 설정

CREATE TABLE 테이블명
(
    필드명 필드타입,
    ...,
    [CONSTRAINT 제약조건명]
    FOREIGN KEY (필드명)
    REFERENCES 참조되는 테이블명 (필드명)
)

→ 필드의 타입 뒤에 FOREIGN KEY를 명시하면 해당 필드가 외래키로 설정된다.

- ALTER 문으로 FOREIGN KEY 제약 조건 설정

ALTER TABLE 테이블명
ADD [CONSTRAINT 제약조건명]
FOREIGN KEY (필드명)
REFERENCES 참조되는 테이블명 (필드명)

→ 테이블에 새로운 필드를 추가할 때 해당 필드를 외래키로 설정하는 방법이다.

- FOREIGN KEY 제약 조건 삭제

ALTER TABLE 테이블명
DROP FOREIGN KEY 제약조건명

ON DELETE, ON UPDATE

외래키 제약 조건에 의해, 참조되는 테이블에서 데이터의 수정이나 삭제가 발생하면, 참조하고 있는 테이블의 데이터도 같이 영향을 받는다.

→ 참조되는 테이블의 값이 삭제될 경우, 참조되는 테이블의 값이 수정될 경우의 동작은 각각 ON DELETE, ON UPDATE 구문으로 설정할 수 있다.

- ON DELETE 구문

참조되는 테이블의 값이 삭제될 경우의 동작.
REFERENCES 테이블명(필드명) ON DELETE 참조동작

   

   - DELETE 참조 동작

1) Cascade: Master 삭제 시 Child 같이 삭제
2) Set Null: Master 삭제 시 Child 해당 필드 Null
3) Set Default: Master 삭제 시 Child 해당 필드 Default 값으로 설정
4) Restrict: Child 테이블에 PK 값이 없는 경우만 Master 삭제 허용
5) No Action: 참조 무결성을 위반하는 삭제/수정 액션을 취하지 않음.

- ON UPDATE 구문

참조되는 테이블의 값이 수정될 경우의 동작.
REFERENCES 테이블명(필드명) ON UPDATE 참조동작

 

   - UPDATE 참조 동작

1) Cascade: Master 수정 시 Child 같이 수정 
2) Set Null: Master 수정 시 Child 해당 필드 Null
3) Set Default: Master 수정 시 Child 해당 필드 Default 값으로 설정
4) Restrict: Child 테이블에 PK 값이 없는 경우만 Master 수정 허용
5) No Action: 참조 무결성을 위반하는 수정 액션을 취하지 않음.
728x90
반응형