Můžete provést UPDATE FROM
vyberte dotaz pomocí vhodných spojení ve vašem spouštěči.
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;
Jedinou výhradou použití této metody je, že pokud někdo smaže řádek nebo aktualizace close
sloupec, pak je třeba hodnoty přepočítat, což se u stávajících řádků nestane. Pouze ve vloženém řádku se zobrazí správná přepočítaná hodnota.
Místo toho můžete jednoduše vytvořit View
pro výpočet sma8
sloupec z hlavní tabulky pro všechny řádky na vyžádání.