Я думаю, вам, вероятно, придется использовать SQL для генерации SQL, а затем запустить сгенерированный SQL. Что-то вроде:
select CONCAT('create or replace function update_sma8() RETURNS TRIGGER AS
$$
BEGIN
UPDATE ', table_name, ' 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 ', table_name, '
)s where s.cdate = NEW.cdate --The newly inserted cdate
AND d.cdate = s.cdate;
RETURN NULL;
END $$ language plpgsql;
') from information_schema.tables
Но на самом деле вы должны принять во внимание совет Гордона (и мои наблюдения) и поместить все свои данные обратно в одну таблицу:
SELECT CONCAT('INSERT INTO all_hist SELECT ''', table_name, ''', t.* FROM ', table_name) FROM information_schema.tables
Это сгенерирует группу sqls, которая поместит все данные таблицы в all_hist, таблицу, которая должна иметь схему, идентичную другим тысячам, за исключением дополнительного столбца "символ" или чего-либо еще.
Вы можете использовать подобную уловку, чтобы создать себе набор представлений, чтобы воссоздать подход с тысячными таблицами, если вы действительно хотите ..