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 中的临时表是自动删除还是保留在磁盘空间上,直到我们删除它们。
问候,
桑杰·萨伦赫
实际上,您创建了一个常规表。您必须指定这是一个临时表:
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 INTO和CREATE TABLE AS。
根据Postgres 文档,临时表会在会话结束或事务结束时删除。
临时或临时
如果指定,该表将创建为临时表。临时表会在会话结束时自动删除,或者可选地在当前事务结束时自动删除(请参阅下面的 ON COMMIT)。当临时表存在时,具有相同名称的现有永久表对当前会话不可见,除非使用架构限定名称引用它们。在临时表上创建的任何索引也自动是临时的。