postgresql – 创建临时表(如果不存在)以用于自定义过程

我正试图使用​​临时表:

CREATE OR REPLACE FUNCTION test1(user_id BIGINT) RETURNS BIGINT AS
$BODY$

BEGIN
  create temp table temp_table1
  ON COMMIT DELETE ROWS

  as SELECT table1.column1,table1.column2 
  FROM table1
  INNER JOIN -- ............

  if exists (select * from temp_table1) then
    -- work with the result
    return 777;
  else 
    return 0;
  end if;

END;
$BODY$
LANGUAGE plpgsql;

我希望立即或尽快删除行temp_table1,这就是我添加ON COMMIT DELETE ROWS的原因.显然,我收到了错误

ERROR:  relation "temp_table1" already exists

我试图添加IF NOT EXISTS,但我不能,我根本找不到它的工作示例,这将是我正在寻找的.

你的建议?

解决方法

每次创建TEMP表之前的DROP表如下所示:

BEGIN
  DROP TABLE IF EXISTS temp_table1;
  create temp table temp_table1
  -- Your rest Code comes here

相关文章

项目需要,有个数据需要导入,拿到手一开始以为是mysql,结果...
本文小编为大家详细介绍“怎么查看PostgreSQL数据库中所有表...
错误现象问题原因这是在远程连接时pg_hba.conf文件没有配置正...
因本地资源有限,在公共测试环境搭建了PGsql环境,从数据库本...
wamp 环境 这个提示就是说你的版本低于10了。 先打印ph...
psycopg2.OperationalError: SSL SYSCALL error: EOF detect...