[sql] SQL에서 CASCADE DELETE 기능을 사용하여 연쇄 삭제하기

SQL에서 CASCADE DELETE는 부모 테이블의 레코드가 삭제될 때 자식 테이블의 관련 레코드도 함께 삭제되도록 하는 기능이다. 이를 사용하면 데이터베이스에서 관련된 레코드를 일일히 삭제할 필요 없이, 한 번의 삭제로 모든 관련 레코드를 자동으로 삭제할 수 있다.

CASCADE DELETE 설정하기

CASCADE DELETE를 사용하려면 외래 키 제약 조건에 ON DELETE CASCADE를 설정해야 한다. 아래의 예시를 통해 CASCADE DELETE를 설정하는 방법을 살펴보자.

ALTER TABLE 자식테이블
ADD CONSTRAINT 외래키제약조건
FOREIGN KEY (부모테이블의외래키)
REFERENCES 부모테이블(기본키)
ON DELETE CASCADE;

위의 코드에서 ALTER TABLE 문을 사용하여 자식 테이블에 새로운 외래 키 제약 조건을 추가한다. ON DELETE CASCADE를 명시함으로써 부모 테이블의 레코드가 삭제될 때 자식 테이블의 관련 레코드도 함께 삭제된다.

CASCADE DELETE 예시

가령, 주문 테이블과 주문 상세 테이블이 있다고 가정해보자. 주문 상세 테이블은 주문 테이블의 외래 키를 가지고 있다. CASCADE DELETE를 설정하면 주문 테이블에서 주문을 삭제할 때 해당 주문에 대한 주문 상세 정보도 함께 삭제된다.

이를 통해 데이터베이스의 관리가 편리해지고 데이터 일관성을 유지할 수 있다.

결론

CASCADE DELETE를 사용하면 데이터베이스 관리가 간편해지고 일관성을 유지할 수 있으나, 신중하게 사용해야 한다. 부모 테이블의 레코드를 삭제할 때 관련된 모든 자식 레코드가 함께 삭제되므로 부모-자식 간의 연관성을 고려하여 사용하여야 한다.

CASCADE DELETE를 사용함으로써 효율적인 데이터 관리와 일관성 있는 데이터베이스를 유지할 수 있다.

참고 자료: