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

INSERT पर दैनिक चलती औसत अद्यतन करने के लिए SQL ट्रिगर फ़ंक्शन

आप एक UPDATE FROM कर सकते हैं आपके ट्रिगर में उपयुक्त जॉइन का उपयोग करके आपकी चुनिंदा क्वेरी।

create or replace function update_sma8() RETURNS TRIGGER AS
$$
 BEGIN

UPDATE daily_ohlc d SET sma8 = s.simple_mov_avg 
FROM
(
 SELECT  sec.cdate,AVG(sec.close)  
   OVER(ORDER BY sec.cdate ROWS BETWEEN 7 PRECEDING AND CURRENT ROW) AS 
    simple_mov_avg FROM daily_ohlc sec
)s where s.cdate = NEW.cdate  --The newly inserted cdate
     AND d.cdate = s.cdate;   
RETURN NULL;

END $$ language plpgsql;

डेमो

इस पद्धति का उपयोग करने की एकमात्र चेतावनी यह है कि यदि कोई हटाता है एक पंक्ति या अपडेट close कॉलम, फिर मानों को पुनर्गणना करना होगा, जो मौजूदा पंक्तियों के लिए नहीं होगा। केवल डाली गई पंक्ति में ही सही पुन:परिकलित मान दिखाई देगा।

इसके बजाय, आप बस View बना सकते हैं sma8 की गणना करने के लिए अनुरोध किए जाने पर सभी पंक्तियों के लिए मुख्य तालिका से कॉलम।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. पोस्टग्रेज में अनटर्मिनेटेड सीएसवी उद्धृत क्षेत्र

  2. पोस्टग्रेज से हरोकू एसक्यूएल लॉग को कैसे बंद करें

  3. Windows पर GeoDjango:GDAL लाइब्रेरी / OSError नहीं ढूँढ सका:[WinError 126] निर्दिष्ट मॉड्यूल नहीं मिला

  4. रैंडम टुपल्स प्राप्त करने के लिए टेबल्स नमूना और अन्य तरीके

  5. SQL फ़ंक्शन रिटर्न-प्रकार:तालिका बनाम SETOF रिकॉर्ड