Я пытаюсь создать функцию триггера SQL, которая должна ОБНОВЛЯТЬ столбец при вставке данных в таблицу. Обновление основано на значениях, присутствующих в значениях INSERTed.
У меня есть следующая таблица для хранения ежедневных данных OHLC по акции.
CREATE TABLE daily_ohlc (
cdate date,
open numeric(8,2),
high numeric(8,2),
low numeric(8,2),
close numeric(8,2),
sma8 numeric(8,2)
);
Команда INSERT:
INSERT INTO daily_ohlc (cdate, open, high, low, close)
values ('SYMBOL', 101, 110, 95, 108);
Когда эта команда будет выполнена, я бы хотел обновить столбец 'sma8', основываясь на том, что текущие значения вставлены и значения уже доступны в таблице.
На данный момент я использую следующий SQL-запрос для вычисления значений для каждой строки, а затем использую результат для обновления столбца 'sma8' с помощью python.
SELECT sec.date, AVG(sec.close)
OVER(ORDER BY sec.date ROWS BETWEEN 7 PRECEDING AND CURRENT ROW) AS
simple_mov_avg FROM daily_ohlc sec;
Приведенный выше запрос вычисляет простое скользящее среднее по последним 8 записям (включая текущую строку).
Используя эту процедуру, я обновляю каждую строку данных в столбце 'sma8' каждый раз, когда вставляю данные. Я хотел бы обновить только последнюю строку (т.е. строку вставляется) с помощью триггера. Как это сделать?