Postgres-为什么在另一个函数中未定义的一个函数中创建了临时表?
这是一个相关的问题。
我无法弄清楚为什么我会收到错误undefined_table关系“ temp_table”不存在
我尝试了各种各样的事情,但是也许我真的不明白我如何正确使用函数中的临时表这是在另一个功能中创建的。
CREATE FUNCTION api.test() RETURNS BOOLEAN LANGUAGE 'plpgsql' SECURITY DEFINER AS $$
BEGIN
CREATE TEMP TABLE temp_table( id INT NOT NULL) ON COMMIT DROP;
INSERT INTO temp_table (id) VALUES (1), (2);
RETURN TRUE;
END;
$$;
CREATE FUNCTION api.test_id(p_id INT) RETURNS BOOLEAN LANGUAGE 'plpgsql' SECURITY DEFINER AS $$
DECLARE
v_id INTEGER;
BEGIN
SELECT id INTO v_id FROM temp_table WHERE id = p_id LIMIT 1;
return v_id IS NOT NULL;
END;
$$;
PS:我在函数中创建临时表,以保护其免于通过不同角色在功能外访问功能之外。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我测试了您的代码。如果在同一交易中,它有效。
您正在从不同的交易中工作。请参阅此处:
在“临时表”
I tested your code. It works if in the same transaction.
You are working from different transactions. See here:
https://www.postgresql.org/docs/current/sql-createtable.html#SQL-CREATETABLE-COMPATIBILITY
At "Temporary Tables"