PostgreSQL Partial Index로 soft delete 구현
내용
1. Partial Index란?
2. Partial Index 사용하기
-- 활성 사용자 간에만 이메일 중복 방지
CREATE UNIQUE INDEX idx_unique_active_email ON users(email)
WHERE deleted_at IS NULL;3. 예시
주문 관리 시스템
CREATE TABLE orders (
id SERIAL PRIMARY KEY,
customer_id INTEGER NOT NULL,
total_amount DECIMAL(10, 2) NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
canceled_at TIMESTAMP NULL
);
-- 취소되지 않은 주문에 대한 인덱스
CREATE INDEX idx_active_orders ON orders(customer_id, created_at)
WHERE canceled_at IS NULL;4. 주의사항
5. 요약
참고
Last updated