섹션 6 SOFT DELETE) UNIQUE 제약 조건 + 가상 컬럼
안녕하세요!
질문이 있습니다
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 제약을 지키는 방식은 좋지 않은 방법인가요?
回答 1
0
안녕하세요. 최영주님
같은 문제를 해결하는 여러가지 방법들이 있고, 각자의 장단점이 있는데요.
말씀하신 방식은 충분히 좋은 방법입니다 🙂
강의에서는 이 문제를 해결할 때 MySQL에 특화된 기능보다는 조금 더 보편적인 내용을 다루어서 제외하게 되었습니다.
감사합니다.
히스토리 관련 질문
0
51
2
통계 데이터 수정 질문
1
59
2
공통 코드에서 Redis Pub/Sub은 최근 실무에서 쓰이진 않나요?
0
129
2
DELETE -> SELECT 질문 드립니다.
0
45
1
상속 관계 모델링의 적용 기준 질문
0
69
1
TTL 캐싱에 대한 질문
0
71
1
공통 코드 사용시 컬럼 타입 설정
0
76
1
history_creted_at과 valid_from
1
59
2
함수 기반 인덱스 (Function-Based Index)
0
63
1
추후 강의 질문있습니다
0
118
2
실무 통계 질문(고민) 드립니다..!
0
87
2
Json 컬럼의 객체 맵핑
0
60
1
[Deprecated] 오타 제보
0
80
1
오타 제보
0
69
2
category_path 테이블에서 idx_descendant 인덱스를 생성하는 이유가 궁금합니다
0
92
2
물리적으로 외래 키 제약 조건을 설정하지 않을 때
0
94
1
`전체 행 스냅샷 이력 테이블`의 대상 테이블 칼럼 변경
1
79
1
common_code_detail의 code 변경 가능성
1
108
1
[해결책 - 코드값 분리] 중 orders(order_status) - common_code(code) 타입 불일치 제보
0
82
1
이미 문자열 타입인 컬럼을 캐스팅하는 이유
0
102
2
계층 구조 모델링 기타 방법들
0
102
1
섹션 9의 퀴즈가 영어로 출력되요.
0
101
2
섹션2 공통 코드) 애플리케이션 ENUM을 API에 그대로 노출한다면?
0
121
1
NoSQL 질문있습니다.
0
110
2

