PostgreSQL创建引用不存在表的函数

时间:2018-08-24 13:32:03

标签: sql postgresql function

我试图定义一个引用将在将来定义的临时表的函数,但是在创建时遇到以下错误:

DROP FUNCTION IF EXISTS test_function();
CREATE FUNCTION test_function() 
RETURNS void AS $$
    SELECT * FROM temp_table
$$ LANGUAGE SQL;
  

错误:关系“ _temp_table”不存在第7行:FROM   temp_table

有没有一种方法可以定义一个引用不存在的表的Postgresql函数?

我可以在函数创建过程中创建一个空的临时表-但这有点丑陋...

任何帮助将不胜感激...

谢谢

1 个答案:

答案 0 :(得分:1)

在加载函数时,您可以使用check_function_bodies关闭引用,这是由pg_dump完成的。

set check_function_bodies = off;

DROP FUNCTION IF EXISTS test_function();
CREATE FUNCTION test_function() 
RETURNS void AS $$
    //your code actually doing something with tables/functions that don't exist yet
$$ LANGUAGE SQL;

set check_function_bodies = on;