我試圖更新我創建的臨時表中的字段。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;
但是它不工作和值字段保持空着。
我嘗試了與已有的表(不是臨時)相同的代碼,代碼按預期工作。
我搜索了更新臨時表和普通表之間的差異,但找不到任何文件。 我希望你能幫助我。
在此先感謝您的幫助。
編輯:編輯表的名稱
您是通過同一物理連接,因此調用第二個函數作爲第一個?如果你從兩個不同的會話做到這一點,當然第二個不會看到第一個插入的數據 –