【问题标题】:Temporary table creation in OracleOracle中的临时表创建
【发布时间】:2015-12-12 23:44:27
【问题描述】:

有没有办法在 Oracle 中创建一个临时表,一旦模式连接关闭,它就会自行删除?本地临时表的工作方式是否类似?

【问题讨论】:

  • Oracle 中没有local temporary 表。不,没有自动删除的临时表。但你为什么需要那个?
  • 感谢您提供的信息!我一直在 Teradata 工作,在那里我有一个选项 Volatile table,一旦会话结束,它就会自动删除。万一我想保存一小段时间的数据,一旦工作完成就必须删除它 易失性表有很大帮助。
  • 在大多数情况下,您实际上并不需要 Oracle 中的临时表。使用 CTE 通常也可以。

标签: oracle temp-tables


【解决方案1】:

我认为您的问题的解决方案是使用 GTT (Global Temporary Tables)。

它们将允许您在其中存储临时数据,这些数据将在每个会话中可用。

CREATE GLOBAL TEMPORARY TABLE my_temp_table (
  id           NUMBER,
  description  VARCHAR2(20)
)

此外,可以通过在创建脚本末尾指定 ON COMMIT DELETE ROWS; 选项来删除此数据,例如:

CREATE GLOBAL TEMPORARY TABLE my_temp_table (
  id           NUMBER,
  description  VARCHAR2(20)
)
ON COMMIT DELETE ROWS;

如网站所述:

ON COMMIT DELETE ROWS 子句表示应在事务结束或会话结束时删除数据。”

你也可以看看Oracle docs here

【讨论】:

    【解决方案2】:

    您可以在 oracle 中创建一次临时表,而不是每个会话。但是,您插入其中的行仅对您的会话可见,并在您结束会话或事务结束时自动删除。

    【讨论】:

      猜你喜欢
      • 2019-12-07
      • 2016-04-02
      • 2018-12-18
      • 1970-01-01
      • 2019-04-04
      • 1970-01-01
      • 2014-11-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多