인프런 커뮤니티 질문&답변
섹션 6 SOFT DELETE) UNIQUE 제약 조건 + 가상 컬럼
작성
·
12
·
수정됨
0
안녕하세요!
질문이 있습니다
Soft delete 환경에서 UNIQUE를 걸 시, 가상 컬럼을 이용한 해결 방법은 소개되지 않은 이유가 있나요?
가상 컬럼으로 해결하는 방식은 추천하지 않는 방법인가요?
예를 들어,
(MySQL)
목표 = Member - email의 unique를 지키는 것
<Member 테이블>
필드 = email, deleted_at, _active_check
UNIQUE(email, _active_check)
이때,
가상 컬럼 =
_active_check
-> _active_check BOOLEAN
GENERATED ALWAYS AS (
IF(deleted_at IS NULL, TRUE, NULL)
) VIRTUAL;
이렇게 하면
hello 계정 생성
email = "hello", deleted_at = null, _active_check = true
(이때, hello 계정은 다시 INSERT 불가 (UNIQUE(email, _active_check))
hello 계정 soft 삭제
email = "hello", deleted_at= 2025.01.01, _active_check = null
hello 계정 다시 생성
email = "hello", deleted_at= 2025.01.01, _active_check = null
email = "hello", deleted_at = null, _active_check = true
=> 결과적으로 UNIQUE 제약이 지켜짐
가상 컬럼을 활용하여, Soft Delete 환경에서 UNIQUE 제약을 지키는 방식은 좋지 않은 방법인가요?
답변




