제약조건: CASCADE

김기현·2025년 6월 15일

Database

목록 보기
9/24

개념

  • CASCADE는 외래 키 제약조건에 의해 자동으로 연쇄 삭제/업데이트를 수행한다.
  • 트랜잭션은 여러 SQL 작업을 하나의 논리적인 작업 단위로 묶어서 모두 성공하거나 모두 실패하게 한다
  • CASCADE로 발생한 자동 작업도 트랜잭션 안에 포함되어 롤백이 가능하다.

CASCADE + 트랜잭션 롤백 동작 방식

  1. 트랜잭션 시작
  2. 부모 테이블에서 DELETE or UPDATE
  3. 자식 테이블에서 CASCADE에 따라 자동 삭제 또는 변경
  4. ROLLBACK실행
  5. 부모와 자식 테이블 모두 변경 사항이 복구된다

예제: ON DELETE CASCADE + 트랜잭션

-- 테이블 생성
CREATE TABLE users
(
    id       INT PRIMARY KEY,
    username VARCHAR(50)
);

CREATE TABLE orders
(
    id      INT PRIMARY KEY,
    user_id INT,
    FOREIGN KEY (user_id) REFERENCES users (id)
        ON DELETE CASCADE
);

-- 데이터 삽입
INSERT INTO users (id, username)
VALUES (1, 'kim');
INSERT INTO orders (id, user_id)
VALUES (101, 1);


-- 트랜잭션 시작
START TRANSACTION;

-- 부모 삭제 → 자식도 CASCADE에 의해 삭제됨
DELETE
FROM users
WHERE id = 1;

-- 확인: orders 테이블에서 user_id = 1인 것도 삭제됨
SELECT *
FROM orders;
-- 결과: 0행

-- 롤백
ROLLBACK;

-- 확인: 삭제가 모두 되돌아옴
SELECT *
FROM users; -- 결과: id = 1, username = 'kim'
SELECT *
FROM orders; -- 결과: id = 101, user_id = 1

요약

항목설명
CASCADE 작동 시점트랜잭션 안에서 부모 레코드 조작 시 자동 실행
ROLLBACK 시 영향부모 + 자식의 변경사항 모두 되돌려짐
트랜잭션 단위CASCADE로 발생한 연쇄 작업도 한 트랜잭션 안에서 처리됨
엔진 조건반드시 InnoDB여야 함 (MyISAM은 트랜잭션, CASCADE 모두 불가)
profile
백엔드 개발자를 목표로 공부하는 대학생

0개의 댓글