SQLでログを使用して削除されたデータの履歴を追跡する方法

SQLデータベースでデータを安全に管理するためには、削除されたデータの履歴を追跡する仕組みが重要です。本記事では、SQLでログを使用して削除されたデータの履歴をどのように追跡するかについて詳しく説明します。

目次

はじめに

SQLデータベースでデータが削除された際、その削除されたデータを追跡する方法はいくつか存在します。特に、業務で使用されるデータベースでは、不正アクセスや誤操作によるデータロスが許されないため、追跡が必須となります。

必要な準備

テーブルの作成

まずは、テスト用のテーブルを作成します。以下のSQLコマンドで、`employees`テーブルと`logs`テーブルを作成します。

CREATE TABLE employees (
    id INT PRIMARY KEY,
    name VARCHAR(50),
    position VARCHAR(50)
);

CREATE TABLE logs (
    id INT AUTO_INCREMENT PRIMARY KEY,
    action VARCHAR(50),
    table_name VARCHAR(50),
    record_id INT,
    deleted_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

トリガーの設定

次に、削除操作が行われたときにログを自動で保存するトリガーを設定します。

DELIMITER //
CREATE TRIGGER after_employee_delete
AFTER DELETE ON employees
FOR EACH ROW
BEGIN
    INSERT INTO logs (action, table_name, record_id) VALUES ('DELETE', 'employees', OLD.id);
END;
//
DELIMITER ;

ログの活用方法

削除操作とログの記録

具体的な削除操作を行い、その後でログがどのように記録されるかを見てみましょう。

DELETE FROM employees WHERE id = 1;

この操作後、`logs`テーブルを確認すると、新しいレコードが追加されているはずです。

履歴の確認

削除されたデータの履歴を追跡するためには、`logs`テーブルを参照します。

SELECT * FROM logs WHERE table_name = 'employees';
idactiontable_namerecord_iddeleted_at
1DELETEemployees12023-10-20 12:34:56
削除されたデータの履歴

まとめ

SQLでログを使用して削除されたデータの履歴を追跡する方法について説明しました。`logs`テーブルとトリガーを設定することで、削除されたデータの履歴を簡単に追跡することができます。これにより、データの安全性が高まり、問題が発生した場合の迅速な対応が可能となります。

コメント

コメントする

目次