イベントによる指定時間経過後の MySQL レコードの削除
7 日を超えたメッセージを MySQL データベースから自動的に削除するには、この代替案を検討してください。イベントを使用したアプローチ:
CREATE EVENT delete_event
ON SCHEDULE AT CURRENT_TIMESTAMP + INTERVAL 1 DAY
ON COMPLETION PRESERVE
DO BEGIN
DELETE messages WHERE date < DATE_SUB(NOW(), INTERVAL 7 DAY);
END;
ログイン後にコピー
このイベントは毎日、指定された時間に実行されます。日付列が 7 日より古いすべてのメッセージを削除します。
コードの説明は次のとおりです:
- CREATE EVENT: 指定された名前 (delete_event) で新しいイベントを作成します。
- ON SCHEDULE AT CURRENT_TIMESTAMP INTERVAL 1 DAY: イベントの実行をスケジュールします現在のタイムスタンプから開始して 1 日 1 回。
- ON COMPLETION PRESERVE: エラーが発生した場合でもイベントの実行が継続されるようにします。
- DO BEGIN: イベントの実行を開始します。
- DELETEmessages ...: 指定された条件に基づいてメッセージテーブルから行を削除します。この場合、日付列が 7 日より古いメッセージが削除されます。
- WHERE date
DATE_SUB(NOW(), INTERVAL 7 DAY): DATE_SUB() 関数を使用して、現在の日付 (NOW()) から 7 日を減算し、日付列の値と比較します。- END;:イベントの実行。
または、cron スクリプトを使用してこのタスクを実行することもできます。ただし、イベントを使用する利点は、システムの cron スケジューラーから独立して実行するように構成できることです。
以上がイベントを使用して古い MySQL レコードを自動的に削除するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。