2012-12-14 16 views
10

Czy możliwe jest wykonanie procedury składowanej uruchamianej co noc o 23:00, sprawdź w tabeli, czy jakikolwiek rekord jest modyfikowany przez ostatnie sześć miesięcy, Jeśli jakiś rekord jest modyfikowany przez ostatnie sześć miesięcy, muszę go usunąć z stół. To musi działać automatycznie, bez użycia jakiegokolwiek zewnętrznego języka.Przeszukiwanie Autorka w mysql

Odpowiedz

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 dla procedura składowana.

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

Wielkie dzięki. Czy możesz powiedzieć, że uruchamiamy to zapytanie bez wywoływania z dowolnego zewnętrznego języka. –

+0

to mój błąd, jeśli stworzymy wydarzenie w MySQL, uruchomi się automatycznie rit. Dzięki –

0

Utwórz wydarzenie jak poniżej

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

Można również napisać skrypt, który przetwarza dane w Python, Perl, PHP, itd

potem, po prostu za pomocą ustawień wpis cron crontab -e i dodać następujący wiersz:

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

Jeśli nie określisz 2>&1 >/dev/null , otrzymasz wiadomość e-mail z wynikami wykonania.