Спасибо, что ответили. Я бы оценил ваше предложение.

я есть сотни таблиц, имеющих одну и ту же схему, и у меня есть функция триггера для ОБНОВЛЕНИЯ некоторого столбца всякий раз, когда данные вставляются в эту таблицу.

Схема таблицы:

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

Ответы на вопрос(1)

Ваш ответ на вопрос