sql >> Databáze >  >> RDS >> PostgreSQL

Spouštěcí funkce SQL pro AKTUALIZACI denního klouzavého průměru po INSERT

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;

Ukázka

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í.



  1. Zajímavosti o spouštěčích MÍSTO

  2. Databáze vs tabulkový prostor, jaký je rozdíl?

  3. Lepší způsob odstranění více řádků v databázi MySQL pomocí PHP?

  4. Wordpress – získávání obrázků z db uložených jako data blob