라라리라
[MySQL] 제약 조건(constraint) - FOREIGN KEY 본문
제약 조건(constraint)
- 데이터의 무결정을 지키기 위해, 데이터를 입력받을 때 실행되는 검사 규칙
종류
- NOT NULL
- UNIQUE
- PRIMARY KEY
- FOREIGN KEY
- DEFAULT
FORIEGN KEY
외래 키. 하나의 테이블을 다른 테이블에 의존하게 만든다.
참조되는 테이블의 필드는 반드시 UNIQUE 나 PRIMARY KEY 제약 조건이 설정되어 있어야 한다.
CREATE 문으로 FOREIGN KEY 생성
CREATE TABLE ChildTable(
ID INT,
ParentID INT,
FOREIGN KEY(ParentID)
REFERENCES ParentTable(ID) ON UPDATE CASCADE
)
// ChildTable의 ParentID는 ParentTable의 ID 필드를 참조한다.
// ParentTable의 ID 필드가 변경되면 ChildTable의 ParentID도 같이 변경된다.
ON DELETE, ON UPDATE
부모 테이블에서 데이터의 수정이나 삭제가 발생할 때, 자식 테이블의 동작을 설정할 수 있다.
ON UPDATE : 부모 테이블의 값이 수정될 경우
ON DELETE : 부모 테이블의 값이 삭제될 경우
+ 함께 설정할 수 있는 동작
- CASCADE: 부모 테이블의 동작을 따라간다. (참조값 삭제-> 참조값 삭제 / 참조값 수정 -> 참조값 수정)
- SET NULL: 부모 테이블에서 참조 받던 필드 값의 변경/삭제시 참조하던 자식 테이블의 필드값을 NULL로 바꾼다.
- NO ACTION: 변경/삭제시에도 데이터에 아무 변경을 가하지 않는다.
- SET DEFAULT: 부모 테이블의 참조값 변경/삭제 시 참조하는 테이블의 데이터는 필드의 기본값(DEFAULT)설정.
- RESTRICT: 참조하는데이터(자식테이블Field)가 남아있으면 참조되는데이터(부모테이블Field) 수정/삭제 불가.
CREATE TABLE ChildTABLE(
ID INT,
ParentID INT,
FOREIGN KEY (ParentID)
REFERENCES ParentTABLE(ID) ON UPDATE CASCADE
ON DELETE RESTRICT
);
// ChildTABEL의 ParentID는 ParentTABLE의 ID 값을 참조하는데,
// ParentTABLE의 ID 값이 변경될때는 수정사항을 따라가고,
// ParentTABLE의 ID 값의 삭제는 막는다.
'코딩 > 다이어리' 카테고리의 다른 글
[Spring] @Configuration과 @Bean 어노테이션 (0) | 2024.02.08 |
---|---|
[Spring] 제어의 역전(IoC), 의존성 주입(DI) (0) | 2024.02.08 |
[클린코드] 레이어드 아키텍처란 무엇이고, 왜 쓰는걸까? (0) | 2024.02.07 |
[인텔리제이] 유용한 단축키 (1) | 2024.02.07 |
[MySQL] 제약 조건(constraint) - NOT NULL (0) | 2024.02.05 |