2012-12-14 17 views
10

Ist es möglich, eine gespeicherte Prozedur, die jede Nacht 23 Uhr laufen, Check-in-Tabelle, wenn ein Datensatz für die letzten sechs Monate geändert wird, Wenn ein Datensatz für die letzten sechs Monate geändert wird, muss ich löschen Tabelle. Dies muss automatisch ohne Verwendung einer externen Sprache ausgeführt werden.Autorunning-Abfrage in Mysql

Antwort

14
CREATE EVENT IF NOT EXISTS `my_old_data_cleaner_event` 
ON SCHEDULE EVERY 23 DAY_HOUR 
COMMENT 'Clean up Service Start at 11:00PM daily!' 
DO DELETE FROM my_table WHERE created_date < (NOW() - INTERVAL 1 MONTH); 

OR für Stored Procedure.

CREATE EVENT IF NOT EXISTS `my_old_data_cleaner_event` 
ON SCHEDULE EVERY 23 DAY_HOUR 
DO CALL my_sp_cleanup_old_data(); 
+0

Vielen Dank .... können Sie bitte sagen, wie wir diese Abfrage ausführen, ohne aus einer externen Sprache zu rufen. –

+0

es ist mein Fehler, wenn wir ein Ereignis in MySQL erstellen, wird es automatisch rit laufen. Vielen Dank –

0

Ereignisse erstellen wie unter

CREATE EVENT e_daily 
    ON SCHEDULE 
    EVERY 1 DAY 
DO 
    BEGIN 
    DELETE FROM tableA WHERE DATE(`yourtimestamp`) <(CURDATE() - INTERVAL 6 MONTHS); 
    END 
0

Sie können auch ein Skript schreiben, dass Ihre Daten in Python verarbeitet, Perl, PHP, usw.

Danach einfach Setup cron-Eintrag mit crontab -e und folgende Zeile hinzufügen:

0 23 * * * /path/to/my/script.pl 2>&1 >/dev/null 

Wenn Sie nicht 2>&1 >/dev/null spezifizieren , erhalten Sie eine E-Mail mit den Ausführungsergebnissen.