【发布时间】:2021-03-29 01:40:27
【问题描述】:
CREATE TEMP TABLE myTempTable 和 CREATE GLOBAL TEMPORARY TABLE myTempTable 有什么区别?
【问题讨论】:
标签: sql postgresql temp-tables
CREATE TEMP TABLE myTempTable 和 CREATE GLOBAL TEMPORARY TABLE myTempTable 有什么区别?
【问题讨论】:
标签: sql postgresql temp-tables
Postgres 没有区别。正如documentation 解释的那样:
SQL 标准还区分了全局临时表和本地临时表,其中本地临时表为每个会话中的每个 SQL 模块都有一组单独的内容,尽管它的定义仍然在会话之间共享。 由于 PostgreSQL 不支持 SQL 模块,因此这种区别在 PostgreSQL 中无关紧要。
出于兼容性考虑,PostgreSQL 将在临时表声明中接受 GLOBAL 和 LOCAL 关键字,但它们目前无效。不鼓励使用这些关键字,因为 PostgreSQL 的未来版本可能会对其含义采用更符合标准的解释。
我添加了突出显示。
【讨论】:
GLOBAL 和 LOCAL 之所以存在,是因为 SQL 标准需要它们。还允许人们从其他SQL 数据库迁移脚本而不会引发语法错误。在任何一种情况下,Postgres 都会忽略它们,因此它们没有实际效果。如果您认为您的代码将在另一个使用它们的数据库上运行,您可以放置它们。只要知道他们的存在对 Postgres 没有影响。