소프트 삭제, 하드 삭제

soft delete, soft deleting
소프트 삭제
hard delete, hard deleting
하드 삭제

1 소프트 삭제[ | ]

  • DB 데이터를 실제로 삭제하지 않고, 삭제여부를 나타내는 컬럼을 사용하는 방식
  • 일반적인 삭제 대신 removed 컬럼을 갱신(SQL UPDATE 문 사용)하는 방식
  • 컬럼명은 보통 removed, deleted_at, is_deleted 따위를 사용함
  • 컬럼의 자료형은 boolean 또는 datetime[1] 사용
  • 예: 삭제되지 않은 데이터는 removed 컬럼값이 NULL, 삭제된 데이터는 removed 값이 삭제된 일시
  • 복구하거나 예전 기록을 확인하고자 할 때 간편함
  • 다른 테이블과 JOIN시에 항상 removed를 점검해야 하므로 불편함. 속도도 느려짐

2 하드 삭제[ | ]

  • 일반적인 '삭제'
  • 소프트 삭제의 반대 개념이라는 의미로 '하드'를 붙인 것
  • SQL DELETE 문 사용

3 SQL 문 비교[ | ]

  • 하드 삭제 (일반적인 삭제)
DELETE FROM notice WHERE id=123;
  • 소프트 삭제
UPDATE notice SET deleted_at=NOW() WHERE id=123;

4 같이 보기[ | ]

5 참고[ | ]

  1. NULL 가능. INSERT시 기본값 NULL 사용
문서 댓글 ({{ doc_comments.length }})
{{ comment.name }} {{ comment.created | snstime }}