ホームページ >データベース >mysql チュートリアル >MySQL で経過時間に基づいて毎日の行削除を自動化するにはどうすればよいですか?
ストアド プロシージャを使用した MySQL での行削除の自動化
すべてのテーブルから 7 日より古い行を削除する MySQL ストアド プロシージャを作成することを目的としています。毎日真夜中に。スクリプト ソリューションは存在しますが、この記事では MySQL の EVENT 機能を使用したより自動化されたアプローチに焦点を当てます。
プロシージャの作成
まず、イベント スケジューラが有効になっていることを確認します。
SET GLOBAL event_scheduler = ON;
次に、毎日次の時刻にトリガーされるイベントを作成します。 00:00:
CREATE EVENT `delete7DayOldRows` ON SCHEDULE EVERY 1 DAY STARTS '2023-03-01 00:00:00' ON COMPLETION PRESERVE DO -- Your delete logic here END;
削除ロジックの定義
イベントの DO ブロック内で、削除ロジックを指定します。次に例を示します。
BEGIN DECLARE tableName VARCHAR(255); DECLARE cursor CURSOR FOR SELECT table_name FROM information_schema.tables WHERE table_schema = 'your_database_name'; OPEN cursor; FETCH cursor INTO tableName; WHILE tableName IS NOT NULL DO DELETE FROM `your_database_name`.`tableName` WHERE CURDATE() - INTERVAL 7 DAY > updateDt; FETCH cursor INTO tableName; END WHILE; CLOSE cursor; END;
このロジックは、指定されたデータベース内のすべてのテーブルを反復処理し、updateDt 列が 7 日以上経過している行を削除します。
考慮事項
以上がMySQL で経過時間に基づいて毎日の行削除を自動化するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。