在并行事务中使用相同的临时表名是否安全?

Tim*_*Tim 4 postgresql transaction temporary-tables postgresql-10 postgresql-11

使用 postgreSQL 10 或 11,创建具有相同名称的临时表是否安全,每个表都携带不同的数据?我不打算在任何会话/连接/交易之间共享数据。名称本身并不重要,但我想避免为每个需要此类中间表的并发查询生成随机名称的麻烦。

临时表仅用于不同的SELECT查询。它将在每个带有该ON COMMIT DROP子句的事务结束时删除。

PostgreSQL文档说明:

当临时表存在时,具有相同名称的现有永久表对当前会话不可见,除非它们被模式限定名称引用。

我不清楚这是否也适用于临时表。

a_v*_*lad 5

文档是指:

  • 如果您有永久表 TABLE_A
  • 然后你创建了一个同名的临时表 TABLE_A,

您的代码将看不到永久表。

但是您可以通过将模式添加到 name - schema_name.table_name来从永久表中请求数据。

回答您的问题 - 是的,它是安全的。