728x90
반응형
SMALL
안녕하세요! 😊 오늘은 Oracle에서 외래 키(Foreign Key) 제약 조건을 설정할 때 사용되는 ON UPDATE와 ON DELETE 옵션들을 쉽게 설명해 드릴게요. 하나씩 차근차근 살펴보도록 해요!
💡 외래 키(Foreign Key)란?
외래 키는 한 테이블의 컬럼이 다른 테이블의 기본 키(Primary Key)를 참조하도록 하는 제약 조건이에요. 데이터의 무결성(데이터가 일관성 있고 정확함)을 유지하는 데 도움을 줍니다.
💡 ON UPDATE
와 ON DELETE
란?
- ON UPDATE: 부모 테이블(참조하는 테이블)의 기본 키 값이 업데이트될 때 발생할 동작을 지정합니다.
- ON DELETE: 부모 테이블의 데이터가 삭제될 때 발생할 동작을 지정합니다.
Oracle에서 ON UPDATE는 지원하지 않지만, ON DELETE는 사용할 수 있어요.
💡 옵션 종류
1. NO ACTION
- 기본 동작이에요.
- 부모 테이블의 데이터가 삭제되거나 업데이트되면 아무런 작업을 하지 않고 제약 조건을 확인해요.
- 만약 자식 테이블에 일치하는 데이터가 존재하면 에러가 발생합니다.
🔑 예제
CREATE TABLE parent_table (
id NUMBER PRIMARY KEY
);
CREATE TABLE child_table (
id NUMBER,
parent_id NUMBER,
CONSTRAINT fk_parent FOREIGN KEY (parent_id)
REFERENCES parent_table(id) ON DELETE NO ACTION
);
🚩 동작
- 부모 테이블의
id
를 삭제하려 하면, 자식 테이블에 해당parent_id
가 존재하면 에러 발생.
2. RESTRICT
NO ACTION
과 비슷하지만, 즉시 제약 조건을 확인합니다.- 트랜잭션이 완료되지 않아도 제약 조건 위반 여부를 바로 체크합니다.
🔑 예제
CONSTRAINT fk_parent FOREIGN KEY (parent_id)
REFERENCES parent_table(id) ON DELETE RESTRICT
🚩 동작
- 부모 테이블의
id
를 삭제하려 하면, 자식 테이블에 데이터가 있는 경우 즉시 에러 발생.
3. CASCADE
- 부모 테이블의 데이터가 삭제되면, 자식 테이블의 관련 데이터도 삭제합니다.
- 연관된 데이터를 자동으로 제거해야 할 때 유용해요.
🔑 예제
CONSTRAINT fk_parent FOREIGN KEY (parent_id)
REFERENCES parent_table(id) ON DELETE CASCADE
🚩 동작
- 부모 테이블의
id
가 삭제되면, 자식 테이블에서 해당parent_id
도 자동 삭제.
4. SET NULL
- 부모 테이블의 데이터가 삭제되면, 자식 테이블의 외래 키 값을 NULL로 설정합니다.
- 자식 데이터를 유지하되, 참조를 없애고 싶을 때 유용해요.
🔑 예제
CONSTRAINT fk_parent FOREIGN KEY (parent_id)
REFERENCES parent_table(id) ON DELETE SET NULL
🚩 동작
- 부모 테이블의
id
가 삭제되면, 자식 테이블의parent_id
가 NULL로 변경.
5. SET DEFAULT
- 부모 테이블의 데이터가 삭제되면, 자식 테이블의 외래 키 값을 기본값(Default)으로 설정합니다.
- Oracle에서는 SET DEFAULT를 지원하지 않아요.
💡 실전 예제: CASCADE와 SET NULL 비교
CREATE TABLE parent_table (
id NUMBER PRIMARY KEY
);
CREATE TABLE child_table (
id NUMBER,
parent_id NUMBER,
CONSTRAINT fk_parent_cascade FOREIGN KEY (parent_id)
REFERENCES parent_table(id) ON DELETE CASCADE,
CONSTRAINT fk_parent_setnull FOREIGN KEY (parent_id)
REFERENCES parent_table(id) ON DELETE SET NULL
);
- 부모 테이블에서 데이터를 삭제하면:
fk_parent_cascade
제약 조건이 있는 자식 데이터는 삭제됩니다.fk_parent_setnull
제약 조건이 있는 자식 데이터는 NULL로 설정됩니다.
💡 마무리
외래 키 옵션은 데이터의 무결성을 유지하면서 삭제 또는 업데이트 동작을 제어할 수 있는 강력한 도구예요. 😊 실수하지 않도록 각 옵션의 동작을 잘 이해하고 적절히 사용해 보세요!
728x90
반응형
SMALL
'데이터베이스 > ORACLE' 카테고리의 다른 글
Oracle 트랜잭션 관리 쉽게 이해하기: START TRANSACTION, COMMIT, ROLLBACK 활용법 (0) | 2024.12.20 |
---|---|
SQL 초보자를 위한 WHERE CASE WHEN 사용법: Oracle vs 다른 DB (0) | 2024.12.20 |
Oracle PRIMARY KEY, FOREIGN KEY, DEFAULT 완벽 가이드 🌟 (0) | 2024.12.20 |
Oracle SQL 집계 함수 완벽 가이드: COUNT부터 LISTAGG까지! (0) | 2024.12.20 |
[데이터베이스] ORACLE 조인(JOIN)의 종류와 차이점: INNER, LEFT, RIGHT, FULL OUTER JOIN 예제 코드 정리 (0) | 2024.10.29 |