提要:在本教程中,您将学习PostgreSQL临时表以及如何有效管理它。

创建临时表

临时表(如其名称所暗示的)是一个在数据库会话期间短暂存在的表。PostgreSQL 在会话或事务结束时自动删除临时表。

要创建临时表,需要使用 CREATE TEMPORARY TABLE 语句:

CREATE TEMPORARY TABLE temp_table(
   ...
);

其中的 TEMPORARY 可以简写为 TEMP

CREATE TEMP TABLE temp_table(
   ...
);

临时表只存在于创建它的当前会话中。

来看个例子。

首先,使用 psql 登录到 PosgreSQL 服务器,并创建一个 test 数据库:

postgres=# CREATE DATABASE test;
CREATE DATABASE
postgres-# \c test;
You are now connected to database "test" as user "postgres".

接下来,创建一个名为 mytemp 的临时表:

test=# CREATE TEMP TABLE mytemp(c INT);
CREATE TABLE
test=# SELECT * FROM mytemp;
 c
---
(0 rows)

然后,使用另一个 psql 连接到 PostgreSQL,启动新的会话,并尝试从 mytemp 临时表中查询数据:

test=# SELECT * FROM mytemp;
ERROR:  relation "mytemp" does not exist
LINE 1: SELECT * FROM mytemp;

PostgreSQL 将抛出一个错误:

test=# SELECT * FROM mytemp;
ERROR:  relation "mytemp" does not exist
LINE 1: SELECT * FROM mytemp;
                      ^

临时表名

临时表可以与永久表共享相同的名称,即使不建议这么做。当您创建一个具有与永久表相同的名称的临时表时,您将不能访问永久表,直到删除临时表。

删除临时表

使用 DROP TABLE 来删除临时表:

DROP TABLE temp_table_name;