Спасибо, что ответили. Я бы оценил ваше предложение.
я есть сотни таблиц, имеющих одну и ту же схему, и у меня есть функция триггера для ОБНОВЛЕНИЯ некоторого столбца всякий раз, когда данные вставляются в эту таблицу.
Схема таблицы:
CREATE TABLE symbol_daily_ohlc (
cdate date,
open numeric(8,2),
high numeric(8,2),
low numeric(8,2),
close numeric(8,2),
sma8 numeric(8,2)
);
Функция запуска:
create or replace function update_sma8() RETURNS TRIGGER AS
$
BEGIN
UPDATE symbol_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 symbol_daily_ohlc sec
)s where s.cdate = NEW.cdate --The newly inserted cdate
AND d.cdate = s.cdate;
RETURN NULL;
END $ language plpgsql;
Настройка триггера на столе:
CREATE TRIGGER trig_update_sma
AFTER INSERT ON symbol_daily_ohlc
FOR EACH ROW
EXECUTE PROCEDURE update_sma8();
Это хорошо работает для данной таблицы, т.е. symbol_daily_ohlc. Я хотел бы использовать одну и ту же триггерную функцию, т.е. update_sma8 (), которая будет использоваться с любой таблицей, имеющей одинаковую схему (я не хочу переписывать одну и ту же функцию для разных таблиц).
Я попытался заменить имя таблицы (то есть symbol_daily_ohlc) на TG_TABLE_NAME, но это не сработало - выдавались ошибки. Так как это сделать?
Ссылка:Функция триггера SQL для ОБНОВЛЕНИЯ дневной скользящей средней после INSERT