2012-12-14 41 views
10

Có thể thực hiện thủ tục được lưu trữ chạy mỗi đêm 11 giờ tối, kiểm tra trong bảng nếu bất kỳ bản ghi nào được sửa đổi trong sáu tháng qua, Nếu một số hồ sơ được sửa đổi trong sáu tháng qua tôi phải xóa nó khỏi bàn. Điều này phải chạy tự động mà không cần sử dụng bất kỳ ngôn ngữ bên ngoài nào.Truy vấn tự động trong mysql

Trả lời

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); 

HOẶC cho 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

Cảm ơn rất nhiều .... bạn có thể vui lòng nói rằng cách chúng tôi chạy truy vấn này mà không cần gọi từ bất kỳ ngôn ngữ bên ngoài nào. –

+0

của nó sai lầm của tôi nếu chúng ta tạo ra một sự kiện trong MySQL nó sẽ chạy tự động rit. Cảm ơn –

0

Tạo một sự kiện như dưới đây

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

Bạn cũng có thể viết một kịch bản mà xử lý dữ liệu của bạn bằng Python, Perl, PHP, vv

Sau đó, bạn chỉ cần thiết lập mục cron sử dụng crontab -e và thêm dòng sau:

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

Nếu bạn không chỉ định 2>&1 >/dev/null , bạn sẽ nhận được email với kết quả thực hiện.