데이터베이스에서 테이블의 레코드를 삭제할 때, 종종 삭제 작업을 로그로 기록하는 것이 유용할 수 있습니다. 이러한 로그는 추후에 삭제 작업을 분석하거나 복구하는 데 도움이 될 수 있습니다. 이번 글에서는 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 문을 사용하여 테이블의 레코드를 삭제한 후 로그 테이블에 기록할 수 있습니다. 이러한 로그는 데이터베이스의 변경점을 추적하고 분석하는 데 도움을 줄 수 있습니다.