Я пытаюсь обновить поле во временной таблице, которую я создал.Postgresql: выполнить обновление во временной таблице в plpgsql не работает
Код для временной таблицы выглядит следующим образом:
CREATE OR REPLACE FUNCTION insertTable()
RETURNS VOID AS $$
BEGIN
execute 'create temporary table myTable (id INTEGER, value TEXT) on commit preserve rows';
execute 'insert into myTable values(1, NULL)';
end if;
end;
$$ LANGUAGE plpgsql;
Далее я пытаюсь обновить значение, поданное с помощью следующей функции:
CREATE OR REPLACE FUNCTION setValue (msg TEXT)
RETURNS VOID AS $$
BEGIN
EXECUTE format('UPDATE myTable SET value = value || $1 WHERE id = '|| quote_literal(1))USING msg;
END;
$$ LANGUAGE plpgsql;
Однако это не работает и поле значения остается пустым.
Я пробовал тот же код с уже существующей таблицей (не временный), и код работал должным образом.
Я искал документацию для разницы между обновлением временной и обычной таблицы, но не смог найти ее. Надеюсь, вы сможете мне помочь.
Заранее за вашу помощь.
Edit: отредактировали имя таблицы
Вы вызывающий второй функцию через ту же физическую связь как первый? Если вы сделаете это с двух разных сеансов, то, конечно, второй не увидит данные, которые были вставлены первым. –