При попытке объединить две таблицы и обновить одну из них я получаю неожиданную ошибку от этой функции прямо здесь:
CREATE OR REPLACE FUNCTION tsi.update_data(_creation_time int)
RETURNS VOID
AS $$
BEGIN
EXECUTE format($sql$
UPDATE tsi.forecasts_%s a SET
a."incidents @ 01:00" = b.n_incid,
a."road @ 01:00" = b.n_roads
FROM tgi_tmp b WHERE a.link_ix = b.link_id;
$sql$,_creation_time);
END $$ LANGUAGE plpgsql;
Это дает мне это сообщение об ошибке:
syntax error at or near "@"
cidents @ 01:00" = n_incid,
^
Кто-нибудь знает, почему я получаю эту ошибку? Таблицы содержат упомянутые столбцы, так что это не проблема. Трудно ли postgres иметь дело со строковыми столбцами в формате Execute?
Версия Postgres: 10,5
Упрощенная структура таблицы:
CREATE TABLE tsi.forecasts_%s (
link_ix int PRIMARY KEY,
"slipincidents @ 00:00" SMALLINT NOT NULL,
"roadcoverage @ 00:00" SMALLINT NOT NULL,
);
и tgi_tmp:
CREATE TEMPORARY TABLE tgi_tmp (
link_id TEXT,
n_road SMALLINT,
n_incid SMALLINT
CONSTRAINT tgi_tmp_pkey PRIMARY KEY (link_id)
);