MySQLトリガーを使用して古いデータを削除する方法


  1. タイムスタンプを使用して古いデータを削除するトリガー:
DELIMITER //
CREATE TRIGGER delete_old_data_trigger
BEFORE INSERT ON テーブル名
FOR EACH ROW
BEGIN
    DELETE FROM テーブル名 WHERE timestamp_column < NOW() - INTERVAL 30 DAY;
END; //
DELIMITER ;

この例では、テーブル内のtimestamp_column列が現在の日時から30日以上前の値を持つ行が新しく挿入される前に、古いデータが自動的に削除されます。

  1. 行数を制限して古いデータを削除するトリガー:
DELIMITER //
CREATE TRIGGER delete_old_data_trigger
AFTER INSERT ON テーブル名
FOR EACH ROW
BEGIN
    DECLARE row_count INT;
    SET row_count = (SELECT COUNT(*) FROM テーブル名);
    IF row_count > 1000 THEN
        DELETE FROM テーブル名 ORDER BY id_column ASC LIMIT (row_count - 1000);
    END IF;
END; //
DELIMITER ;

この例では、テーブル内の行数が1000を超える場合、古いデータを削除します。id_columnはテーブル内の一意の識別子列を表します。

これらの例は、トリガーを使用して古いデータを削除するための一般的な手法の一部です。具体的な要件に合わせてコードを調整することができます。ただし、トリガーの使用には注意が必要であり、データベースのパフォーマンスに影響を与える可能性があるため、慎重に検討する必要があります。