2012-12-31 10 views
12

मैं 7 दिनों के बाद अपने MySQL डेटाबेस से कुछ संदेश हटाना चाहता हूं।एक निश्चित समय के बाद एक MySQL रिकॉर्ड को कैसे हटाएं

मेरी संदेश तालिका पंक्तियों में यह प्रारूप है: आईडी | संदेश | दिनांक

तारीख सामान्य प्रारूप में एक टाइमस्टैम्प है; 2012-12-29 17:14:53

मैं सोच रहा था कि एक MySQL घटना क्रॉन नौकरी के बजाय जाने का तरीका होगा।

मेरे पास एक अनुभवी एसक्यूएल व्यक्ति के लिए एक साधारण सवाल है, मैं नीचे दिए गए ब्रैकेट में हटाए गए संदेश भाग को कैसे कोड करूं?

एक उदाहरण की सराहना की जाएगी, धन्यवाद।

DELIMITER $$ 
    CREATE EVENT delete_event 
    ON SCHEDULE AT CURRENT_TIMESTAMP + INTERVAL 1 DAY 
    ON COMPLETION PRESERVE 
    DO 
    BEGIN 
     DELETE messages WHERE date >= (the current date - 7 days); 
    END; 
$$; 

उत्तर

14

आप इस शर्त का उपयोग कोशिश कर सकते हैं एक साधारण क्रॉन लिपि। ऐसा करने के कारण सरल हैं: कोड को बनाए रखना आसान है, कोई बदसूरत एसक्यूएल वर्कअराउंड नहीं है, जो आपके सिस्टम के साथ आसानी से एकीकृत करता है।

+0

आपके इनपुट जॉर्डन के लिए धन्यवाद, मेरी समस्या यह है कि मुझे क्रॉन स्क्रिप्टिंग के बारे में कुछ भी नहीं है। लेकिन मुझे एहसास है कि घटनाएं एक MySQL थ्रेड पर चलती हैं जो मामूली हानि हो सकती है – Mike

7

यह चाल चलाना चाहिए।

WHERE date < DATE_SUB(NOW(), INTERVAL 7 DAY) 

तो पूरे SQL स्क्रिप्ट इस तरह दिखता है कि:

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; 

हालांकि, अपनी जगह पर मैं भी समस्या के साथ हल किया

DELETE FROM messages WHERE date < (CURDATE() - INTERVAL 7 DAY); 
+0

धन्यवाद @ माइकल मोयर, मैंने अभी कोशिश की है और यह ठीक काम करता है – Mike

+0

पाठ्यक्रम के कम समय अंतराल के साथ :-) – Mike

+0

खुशी हुई जिसने मदद की:) –

2

वहाँ जो लोग होस्टिंग, 1and1 की तरह एक साझा पर हैं, और ईवेंट नहीं बना सकते के लिए, एक वैकल्पिक webcron

उपयोग करने के लिए आप बस PHP स्क्रिप्ट आप हैं उसका URL webcron बताने की आवश्यकता है चलाने के लिए, और वे आपके लिए

संबंधित मुद्दे