【问题标题】:What is the difference between clauses 'temp table' vs 'global temporary table' in postgresql?postgresql 中的子句“临时表”与“全局临时表”有什么区别?
【发布时间】:2021-03-29 01:40:27
【问题描述】:

CREATE TEMP TABLE myTempTableCREATE GLOBAL TEMPORARY TABLE myTempTable 有什么区别?

【问题讨论】:

    标签: sql postgresql temp-tables


    【解决方案1】:

    Postgres 没有区别。正如documentation 解释的那样:

    SQL 标准还区分了全局临时表和本地临时表,其中本地临时表为每个会话中的每个 SQL 模块都有一组单独的内容,尽管它的定义仍然在会话之间共享。 由于 PostgreSQL 不支持 SQL 模块,因此这种区别在 PostgreSQL 中无关紧要。

    出于兼容性考虑,PostgreSQL 将在临时表声明中接受 GLOBAL 和 LOCAL 关键字,但它们目前无效。不鼓励使用这些关键字,因为 PostgreSQL 的未来版本可能会对其含义采用更符合标准的解释。

    我添加了突出显示。

    【讨论】:

    • 这是否意味着'create TEMP table'就像写'create LOCAL TEMPORARY table'?因为从上面的文档中,它是在 GLOBAL 临时表和 LOCAL 临时表之间进行比较,而不是在 TEMP 表和 GLOBAL 临时表之间进行比较。
    • ... i guest TEMPORARY 和 TEMP 是可互换的子句。如果 GLOBAL 没有描述,那就意味着它是 LOCAL('create local [temp/temporary] table' 等于 'create [temp|temporary] table')
    • @FZS 。 . .临时表不同于其他表(它们会被自动删除)。但是,全局临时表和本地临时表没有区别。
    • GLOBALLOCAL 之所以存在,是因为 SQL 标准需要它们。还允许人们从其他SQL 数据库迁移脚本而不会引发语法错误。在任何一种情况下,Postgres 都会忽略它们,因此它们没有实际效果。如果您认为您的代码将在另一个使用它们的数据库上运行,您可以放置​​它们。只要知道他们的存在对 Postgres 没有影响。
    • @GordonLinoff 关于自动删除...如果我创建了临时表,是否有人可以使用或查看我创建的临时表?
    猜你喜欢
    • 2010-09-29
    • 1970-01-01
    • 1970-01-01
    • 2017-06-27
    • 2023-04-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-23
    相关资源
    最近更新 更多