- タイムスタンプを使用して古いデータを削除するトリガー:
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日以上前の値を持つ行が新しく挿入される前に、古いデータが自動的に削除されます。
- 行数を制限して古いデータを削除するトリガー:
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
はテーブル内の一意の識別子列を表します。
これらの例は、トリガーを使用して古いデータを削除するための一般的な手法の一部です。具体的な要件に合わせてコードを調整することができます。ただし、トリガーの使用には注意が必要であり、データベースのパフォーマンスに影響を与える可能性があるため、慎重に検討する必要があります。