尝试加入两个表并更新其中一个表时,我在此处收到此函数的意外错误:
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 是否很难处理执行格式的字符串列?
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)
);