【发布时间】:2015-06-11 14:47:26
【问题描述】:
我正在尝试更新我创建的临时表中的字段。
临时表的代码如下所示:
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;
但是它不起作用并且值字段保持为空。
我在已经存在的表(不是临时表)上尝试了相同的代码,并且代码按预期工作。
我在文档中搜索了更新临时表和普通表之间的区别,但找不到任何内容。 我希望你能帮我解决这个问题。
提前感谢您的帮助。
编辑:编辑表名
【问题讨论】:
-
您是否通过与第一个相同的物理连接来调用第二个函数?如果您从两个不同的会话中执行此操作,那么第二个会话当然不会看到第一个插入的数据
标签: postgresql sql-update plpgsql execute temp-tables