आप एक 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
की गणना करने के लिए अनुरोध किए जाने पर सभी पंक्तियों के लिए मुख्य तालिका से कॉलम।