Contents
see List작성일 2016. 01. 23.
Oracle DROP TABLE CASCADE CONSTRAINTS
Oracle에서 외래 키(FK) 제약조건이 참조하는 테이블을 삭제할 때 CASCADE CONSTRAINTS 옵션을 사용합니다. 종속된 제약조건을 함께 제거하는 방법입니다.
1. 기본 문법
-- 외래 키 제약조건 무시하고 테이블 삭제
DROP TABLE 테이블명 CASCADE CONSTRAINTS;
-- Tablespace 공간도 즉시 반환
DROP TABLE 테이블명 CASCADE CONSTRAINTS PURGE;
-- 예시
DROP TABLE TB_ORDER CASCADE CONSTRAINTS;
DROP TABLE TB_ORDER_DETAIL CASCADE CONSTRAINTS PURGE;
2. 일반 DROP vs CASCADE CONSTRAINTS
-- 상황: TB_ORDER_DETAIL이 TB_ORDER를 참조
-- 일반 DROP - 오류 발생
DROP TABLE TB_ORDER;
-- ORA-02449: unique/primary keys in table referenced by foreign keys
-- CASCADE CONSTRAINTS - 성공
DROP TABLE TB_ORDER CASCADE CONSTRAINTS;
-- TB_ORDER_DETAIL의 FK 제약조건도 함께 삭제됨
3. 삭제되는 것과 유지되는 것
| 삭제됨 | 유지됨 |
|---|---|
| 해당 테이블 | 참조하던 테이블 |
| 해당 테이블의 모든 제약조건 | 참조 테이블의 데이터 |
| 참조하던 FK 제약조건 | 참조 테이블의 다른 제약조건 |
| 인덱스, 트리거 | - |
4. 실전 예시
-- 1. 현재 참조 관계 확인
SELECT
a.table_name AS child_table,
a.constraint_name AS fk_name,
c.table_name AS parent_table
FROM user_constraints a
JOIN user_constraints c ON a.r_constraint_name = c.constraint_name
WHERE c.table_name = UPPER("TB_ORDER");
-- 2. CASCADE로 부모 테이블 삭제
DROP TABLE TB_ORDER CASCADE CONSTRAINTS PURGE;
-- 3. 삭제 후 확인 (FK가 제거되었는지)
SELECT constraint_name, constraint_type
FROM user_constraints
WHERE table_name = UPPER("TB_ORDER_DETAIL");
5. PURGE 옵션
-- PURGE 없이 삭제 - 휴지통으로 이동
DROP TABLE TB_ORDER CASCADE CONSTRAINTS;
-- RECYCLEBIN에서 복구 가능: FLASHBACK TABLE TB_ORDER TO BEFORE DROP;
-- PURGE와 함께 삭제 - 완전 삭제
DROP TABLE TB_ORDER CASCADE CONSTRAINTS PURGE;
-- 복구 불가, Tablespace 즉시 반환
6. 여러 테이블 순서대로 삭제
-- 방법 1: CASCADE CONSTRAINTS 사용
DROP TABLE TB_ORDER CASCADE CONSTRAINTS PURGE;
DROP TABLE TB_ORDER_DETAIL CASCADE CONSTRAINTS PURGE;
DROP TABLE TB_PRODUCT CASCADE CONSTRAINTS PURGE;
-- 방법 2: 참조 순서 역순으로 삭제 (CASCADE 불필요)
DROP TABLE TB_ORDER_DETAIL PURGE; -- 자식 먼저
DROP TABLE TB_ORDER PURGE; -- 부모 나중에
7. 주의사항
- CASCADE CONSTRAINTS는 FK만 삭제, 데이터는 삭제 안 함
- ON DELETE CASCADE와 다름 (이건 데이터 삭제)
- 프로덕션에서 사용 시 반드시 백업 먼저
- DBA 권한 또는 테이블 소유자만 실행 가능
database
| No | 작성일 | Title |
|---|---|---|
| 2114 | 2026. 02. 11. | PostgreSQL 17 신기능 완전 정리 |
| 2113 | 2026. 02. 11. | pgvector로 구축하는 벡터 데이터베이스 |
| 2112 | 2026. 02. 11. | Supabase 실전 활용 가이드: PostgreSQL의 새로운 패러다임 |
| 2090 | 2026. 01. 13. | mariadb(mysql) vs Oracle vs PostgreSQL: 종합 비교 가이드 |
| 2003 | 2025. 11. 30. | Oracle Hint 사용법 - 옵티마이저 제어하기 |
| 2002 | 2025. 11. 30. | Connection Pool 설정 가이드 - HikariCP |
| 2001 | 2025. 11. 30. | 데이터베이스 백업과 복구 전략 |
| 2000 | 2025. 11. 30. | MongoDB 기초 - Document DB 시작하기 |
| 1999 | 2025. 11. 30. | Redis 캐싱 전략 - Cache Aside, Write Through, Write Behind |
| 1998 | 2025. 11. 30. | 트랜잭션 격리 수준 이해하기 |