실제로 DB에서 삭제하지 않고 해당 데이터에 삭제 표시만 해둠
예시
id | user_id | user_name | deleted_at |
---|---|---|---|
1 | 1123 | 이민규 | null |
2 | 2343 | 박민희 | null |
3 | 3213 | 노효주 | null |
4 | 2132 | 장효석 | null |
id | user_id | user_name | deleted_at |
---|---|---|---|
1 | 1123 | 이민규 | 2022.11.25 |
2 | 2343 | 박민희 | null |
3 | 3213 | 노효주 | null |
4 | 2132 | 장효석 | null |
실제로 데이터를 지움
실무에서는 Audit Table에 변경을 기록한다.
Audit Table? 관리권한이 있는 경우에만 접근할 수 있는 테이블 특정 테이블에서 수행되는 작업을 추적하는 기능을 함
예시
id | user_id | user_name |
---|---|---|
1 | 1123 | 이민규 |
2 | 2343 | 박민희 |
3 | 3213 | 노효주 |
4 | 2132 | 장효석 |
id | user_id | user_name |
---|---|---|
2 | 2343 | 박민희 |
3 | 3213 | 노효주 |
4 | 2132 | 장효석 |
사용 형식
await dataSource.getRepository(Entity).createQueryBuilder().softDelete()
사용 예제
await myDataSource
.createQueryBuilder('users')
.softDelete()
.where("id = :id", { id: 1 })
.execute();
soft delete를 되돌리는 예제
await myDataSource
.createQueryBuilder('users')
.restore()
.where("id = :id", { id: 1 })
.execute();