Postgresql:当在 postgresql 中删除临时表时

use*_*074 6 postgresql temporary-tables

我正在将数据插入临时表并且它工作正常。下面是相同的 psedo sql 代码

with cte as(

)
select * 
into temp_table
from cte
Run Code Online (Sandbox Code Playgroud)

使用这种方法,数据可以非常快地插入临时表中。根据我的知识,一旦会话关闭,临时表就会被删除。但是即使关闭了我的 pgadmin 连接,我的临时表也不会被删除。

我的问题是 postgresql 中的临时表是自动删除还是保留在磁盘空间上,直到我们删除它们。

问候,

桑杰·萨伦赫

kli*_*lin 7

实际上,您创建了一个常规表。您必须指定这是一个临时表:

with cte as(
-- <a_query>
)
select * 
into temporary temp_table
from cte;
Run Code Online (Sandbox Code Playgroud)

或(推荐的语法):

create temporary table temp_table as
-- <a_query>
Run Code Online (Sandbox Code Playgroud)

请参阅SELECT INTOCREATE TABLE AS。


McN*_*ets 7

根据Postgres 文档,临时表会在会话结束或事务结束时删除。

临时或临时

如果指定,该表将创建为临时表。临时表会在会话结束时自动删除,或者可选地在当前事务结束时自动删除(请参阅下面的 ON COMMIT)。当临时表存在时,具有相同名称的现有永久表对当前会话不可见,除非使用架构限定名称引用它们。在临时表上创建的任何索引也自动是临时的。