Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

मैं तालिका में डेटा के 24 घंटे बाद स्वचालित रूप से mysql तालिका से डेटा की पंक्तियों को कैसे हटाऊं?

नियमित घटनाओं का उपयोग करने का प्रयास करें। आरंभ करने के लिए, इवेंट शेड्यूलर का उपयोग करके सक्षम करें

SET GLOBAL event_scheduler = ON;

उसके बाद आप क्रेट इवेंट कर सकते हैं जो पंक्तियों के निर्माण समय की जाँच करेगा। उदाहरण के लिए

CREATE EVENT recycling ON SCHEDULE EVERY 1 HOUR ENABLE 
  DO 
  DELETE FROM MyTable WHERE `timestamp_column` < CURRENT_TIMESTAMP - INTERVAL 24 HOUR;

यदि आपकी तालिका में पंक्ति निर्माण के टाइमस्टैम्प के साथ कोई कॉलम नहीं है, तो आप ट्रिगर बना सकते हैं जो वर्तमान टाइमस्टैम्प और सम्मिलित पंक्ति पहचानकर्ता को सहायक तालिका में सम्मिलित करेगा।

CREATE TRIGGER logCreator AFTER INSERT ON MainTable
  FOR EACH ROW 
  INSERT INTO LogTable (MainID, Created) VALUES(NEW.id, CURRENT_TIMESTAMP);

फिर आप इस लॉग का उपयोग मुख्य तालिका की कुंजी प्राप्त करने के लिए कर सकते हैं जो विशिष्ट समय से पहले बनाई गई थी।

delimiter |
CREATE EVENT cleaner ON SCHEDULE EVERY 1 HOUR ENABLE 
  DO 
  BEGIN
    DECLARE MaxTime TIMESTAMP;
    SET MaxTime = CURRENT_TIMESTAMP - INTERVAL 24 HOUR;
    DELETE FROM MainTable 
    WHERE id IN (SELECT MainID FROM LogTable WHERE Created < MaxTime);
    DELETE FROM LogTable WHERE LogTable.Created < MaxTime;
  END |
  delimiter ;


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL:ग्रुप बाय में नहीं है

  2. कोल्डफ्यूजन एक क्वेरी को पैरामीटरेट करना

  3. MySQL या शर्त

  4. MySQL की अधिकतम समय सीमा 838:59:59 क्यों है?

  5. लार्वा में सेट में खोजें? उदाहरण