[sql] CASCADE 옵션을 사용하여 관련된 테이블 삭제하기

SQL에서 CASCADE 옵션은 하나의 테이블을 삭제할 때, 해당 테이블과 관계를 맺는 다른 테이블의 데이터도 함께 삭제하는 기능입니다. 이를 통해 데이터 일관성을 유지하며 테이블을 간편하게 삭제할 수 있습니다.

예를 들어, 아래와 같이 주문 정보를 저장하는 orders 테이블과 해당 주문에 대한 상세 정보를 저장하는 order_details 테이블이 있다고 가정해봅시다.

CREATE TABLE orders (
    id INT PRIMARY KEY,
    customer_id INT,
    order_date DATE,
    total_amount DECIMAL(10, 2)
);

CREATE TABLE order_details (
    id INT PRIMARY KEY,
    order_id INT,
    product_id INT,
    quantity INT,
    price DECIMAL(10, 2),
    FOREIGN KEY (order_id) REFERENCES orders(id) ON DELETE CASCADE
);

orders 테이블과 order_details 테이블은 order_id라는 외래 키를 공유하고 있습니다. 만약 어떤 주문 데이터를 삭제하고자 한다면, 해당 주문에 대한 상세 정보도 함께 삭제되어야 합니다.

CASCADE 옵션을 사용하여 orders 테이블에서 특정 주문을 삭제하면, order_details 테이블에서 해당 주문에 대한 모든 상세 정보가 자동으로 삭제됩니다. 이를 수행하기 위해서는 다음과 같은 SQL 문을 사용할 수 있습니다.

DELETE FROM orders WHERE id = 1;

이렇게 CASCADE 옵션을 사용하면, 관련된 테이블의 데이터도 함께 삭제하여 데이터 일관성을 유지할 수 있습니다. 이를 통해 데이터베이스 관리가 더욱 효율적이고 간편해집니다.

참고 자료