역사퀴즈

삭제 쿼리는 왜 이력 테이블에 레코드를 기록한 후 실행될까?

네, 실제로 삭제 쿼리는 이력(히스토리) 테이블에 해당 레코드를 먼저 기록한 뒤에 실행되는 경우가 많습니다. 그 이유는 이력 테이블이 데이터베이스에서 시간의 흐름에 따라 발생한 변경 사항을 추적하기 위한 용도로 사용되기 때문입니다.

삭제 전 이력 테이블에 기록하는 이유

레코드가 삭제될 때는 삭제된 레코드에 관한 정보가 이력 테이블에 새로운 레코드로 추가됩니다. 여기에는 다음과 같은 정보가 포함됩니다.

  • 삭제된 데이터의 원본 내용
  • 삭제된 날짜와 시간
  • 삭제를 수행한 사용자

이러한 정보는 데이터베이스 변경 사항을 감사(audit)하는 데 활용될 수 있으며, 필요할 경우 삭제된 레코드를 복원하는 데도 사용할 수 있습니다. 즉, 실수로 인한 데이터 손실을 방지하고 데이터 무결성과 추적성을 확보하는 중요한 안전장치 역할을 합니다.

이력 테이블 자체에 대한 삭제 쿼리

흥미롭게도 삭제 쿼리는 이력 테이블 자체에서 레코드를 제거하는 데에도 사용됩니다. 이런 작업이 필요한 경우는 다음과 같습니다.

  • 이력 테이블의 크기가 너무 커져서 저장 공간이나 성능에 영향을 주는 경우
  • 보관 기간이 지나 더 이상 필요하지 않은 오래된 데이터를 정리해야 하는 경우

주의사항

다만 이력 테이블에서 레코드를 삭제할 때는 반드시 해당 레코드가 더 이상 필요하지 않은지 먼저 확인해야 합니다. 법적 보존 의무나 감사 요건에 따라 일정 기간 동안 이력 데이터를 유지해야 할 수 있으며, 한 번 삭제된 데이터는 복구하기 어렵기 때문입니다. 따라서 보존 정책을 수립하고, 삭제 전 백업을 수행하는 것이 안전합니다.