[sql] DELETE 문을 사용하여 테이블에서 레코드를 삭제할 때 로그 테이블에 삭제된 레코드 기록하는 방법

데이터베이스에서 테이블의 레코드를 삭제할 때, 삭제된 레코드의 정보를 로그 테이블에 저장하여 추적할 수 있는 기능은 매우 유용합니다. 이 글에서는 SQL DELETE 문을 사용하여 테이블에서 레코드를 삭제하고, 해당 레코드를 로그 테이블에 기록하는 방법을 알아보겠습니다.

1. 로그 테이블 생성

먼저, 삭제된 레코드의 정보를 저장할 로그 테이블을 생성해야 합니다. 예를 들어, “deleted_records” 테이블로 로그를 기록하도록 하겠습니다. 이 테이블은 주 테이블과 동일한 구조를 가지며, 추가로 삭제된 시간(“deleted_time”) 컬럼을 포함하도록 설계할 수 있습니다.

CREATE TABLE deleted_records (
  id INT PRIMARY KEY,
  name VARCHAR(50),
  deleted_time TIMESTAMP
);

2. DELETE 문 실행 및 로그 기록

이제, 실제 데이터를 삭제하고 로그를 기록하는 DELETE 문을 작성해보겠습니다. 아래 예제는 “users” 테이블에서 ID가 1인 레코드를 삭제하고, 해당 정보를 “deleted_records” 테이블에 기록하는 예제입니다.

DELETE FROM users WHERE id = 1;

INSERT INTO deleted_records (id, name, deleted_time)
SELECT id, name, NOW() FROM users WHERE id = 1;

위의 예제에서 첫 번째 문장은 “users” 테이블에서 ID가 1인 레코드를 삭제하는 DELETE 문입니다. 두 번째 문장은 “deleted_records” 테이블에 삭제된 레코드의 정보를 삽입하는 INSERT 문입니다. SELECT 문을 사용하여 삭제된 레코드의 정보를 가져와 “deleted_records” 테이블에 삽입하는 방식입니다. “deleted_time” 컬럼에는 현재 시간을 지정하도록 하였습니다.

이제 DELETE 문 실행 시, 삭제된 레코드의 정보가 로그 테이블에 자동으로 기록되게 됩니다.

3. 로그 확인

“deleted_records” 테이블에서 로그를 확인하기 위해서는 간단한 SELECT 문을 사용하면 됩니다. 아래 예제는 “deleted_records” 테이블의 모든 로그를 조회하는 SELECT 문입니다.

SELECT * FROM deleted_records;

위의 예제를 실행하면, 삭제된 레코드의 로그를 확인할 수 있습니다. 로그 테이블에는 삭제된 레코드의 ID, 이름 및 삭제된 시간 정보가 저장되어 있을 것입니다.

결론

SQL DELETE 문을 사용하여 테이블에서 레코드를 삭제할 때, 로그 테이블에 해당 레코드의 정보를 기록하는 방법을 살펴보았습니다. 이를 통해 삭제된 레코드를 추적하고 데이터의 변동 내역을 파악할 수 있습니다. 로그 테이블을 활용하여 데이터의 안전성과 추적성을 높일 수 있으니, 필요한 경우에는 이러한 방법을 적용해보시기 바랍니다.

References