강의

멘토링

커뮤니티

인프런 커뮤니티 질문&답변

최영주님의 프로필 이미지
최영주

작성한 질문수

김영한의 실전 데이터베이스 - 설계 2편, 실무에서 반드시 마주치는 9가지 설계 패턴

섹션 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;

 

이렇게 하면

  1. hello 계정 생성

email = "hello", deleted_at = null, _active_check = true

(이때, hello 계정은 다시 INSERT 불가 (UNIQUE(email, _active_check))

  1. hello 계정 soft 삭제

email = "hello", deleted_at= 2025.01.01, _active_check = null

  1. hello 계정 다시 생성

     

email = "hello", deleted_at= 2025.01.01, _active_check = null

email = "hello", deleted_at = null, _active_check = true

=> 결과적으로 UNIQUE 제약이 지켜짐

 

가상 컬럼을 활용하여, Soft Delete 환경에서 UNIQUE 제약을 지키는 방식은 좋지 않은 방법인가요?

답변

답변을 기다리고 있는 질문이에요
첫번째 답변을 남겨보세요!
최영주님의 프로필 이미지
최영주

작성한 질문수

질문하기