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

एक ही टेबल पर ट्रिगर का उपयोग करके नई पंक्ति सम्मिलित करना

आप एक ट्रिगर से एक ही तालिका में सम्मिलित नहीं कर पाएंगे . मैं आपके ट्रिगर को एक प्रक्रिया से बदल दूंगा, और फिर प्रक्रिया के माध्यम से सभी स्थिति अपडेट को चैनल करूंगा:

CREATE PROCEDURE UpdateJobStatus(jobId INT, NewStatus NVARCHAR(50))
BEGIN
  UPDATE job
     SET `Status` = NewStatus 
     WHERE job_id = jobId;

  IF NewStatus = 'COMPLETED' AND jobId <=6 THEN
    INSERT INTO job(cycle_id, job_id, status) 
       SELECT cycle_id, job_id+1, 'WATING_TO_START'
       FROM job 
       WHERE job_id = jobId;
  END IF;
END;

यहां Sql Fiddle

यद्यपि प्रक्रिया को आपके कोड में कुछ संशोधन की आवश्यकता होगी (यानी आपको डेटा को सीधे अपडेट करने के बजाय प्रक्रिया को कॉल करने की आवश्यकता होगी), प्रक्रिया को अधिक स्पष्ट होने का लाभ है - पृष्ठभूमि में स्वचालित रूप से चीजों को करने वाले ट्रिगर गैर-सहज हो सकते हैं।




  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. innodb में ऑपरेशन लॉक पूरी टेबल हटाएं

  4. UID उत्पन्न करने वाली संग्रहीत कार्यविधि के साथ MySQL गतिरोध

  5. MySQL डेटाबेस में सिंगल टेबल का बैकअप कैसे लें?