[sql] DELETE 문을 사용하여 테이블의 레코드를 삭제한 후 로그 테이블에 기록하는 방법

데이터베이스에서 테이블의 레코드를 삭제할 때, 종종 삭제 작업을 로그로 기록하는 것이 유용할 수 있습니다. 이러한 로그는 추후에 삭제 작업을 분석하거나 복구하는 데 도움이 될 수 있습니다. 이번 글에서는 DELETE 문을 사용하여 테이블의 레코드를 삭제한 후 로그 테이블에 기록하는 방법에 대해 알아보겠습니다.

1. 로그 테이블 생성

먼저, 삭제 작업을 기록할 로그 테이블을 생성해야 합니다. 로그 테이블은 원래 테이블과 동일한 구조를 가지면서 추가적인 필드들을 포함할 수 있습니다. 예를 들어, 다음과 같이 로그 테이블을 생성할 수 있습니다.

CREATE TABLE log_table (
  id INT AUTO_INCREMENT PRIMARY KEY,
  table_name VARCHAR(255),
  record_id INT,
  delete_date DATETIME
);

위의 예제에서 log_table은 로그를 기록할 테이블 이름입니다. table_name 필드는 삭제 작업을 수행한 원래 테이블 이름을 저장하고, record_id 필드는 실제 삭제된 레코드의 ID를 저장합니다. delete_date 필드는 삭제 작업이 수행된 시간을 저장합니다. 필요한 경우 로그 테이블에 추가적인 필드들을 포함시킬 수 있습니다.

2. 삭제 작업과 로그 기록

이제 삭제 작업을 수행하는 DELETE 문을 작성하고, 해당 작업을 로그 테이블에 기록하는 코드를 작성할 수 있습니다. 예를 들어, 다음과 같은 DELETE 문을 사용하여 테이블의 레코드를 삭제하고 로그 테이블에 기록하는 방법을 살펴보겠습니다.

DELETE FROM original_table
WHERE condition;

INSERT INTO log_table (table_name, record_id, delete_date)
VALUES ('original_table', deleted_record_id, NOW());

위의 코드에서 original_table은 삭제 작업을 수행할 원래 테이블의 이름입니다. condition은 삭제 작업을 적용할 레코드를 선택하는 조건입니다. 필요에 따라 조건을 추가하거나 수정할 수 있습니다.

deleted_record_id는 실제 삭제된 레코드의 ID를 나타냅니다. 이 값을 DELETE 문을 실행하기 전에 미리 얻어올 필요가 있습니다. 예를 들어, PHP를 사용하는 경우 mysqli_insert_id 함수를 사용하여 마지막에 삽입된 레코드의 ID를 가져올 수 있습니다.

마지막으로, INSERT 문을 사용하여 로그 테이블에 삭제 작업의 로그를 기록합니다. table_name 필드에는 원래 테이블의 이름을, record_id 필드에는 삭제된 레코드의 ID를 저장하고, delete_date 필드에는 삭제 작업이 수행된 시간을 저장합니다.

3. 참고 자료

위의 방법을 사용하면 DELETE 문을 사용하여 테이블의 레코드를 삭제한 후 로그 테이블에 기록할 수 있습니다. 이러한 로그는 데이터베이스의 변경점을 추적하고 분석하는 데 도움을 줄 수 있습니다.