【问题标题】:Would a Temporary table be dropped automatically in Oracle?临时表会在 Oracle 中自动删除吗?
【发布时间】:2022-01-13 21:44:47
【问题描述】:

请原谅我问了一个愚蠢的问题。

会在 Oracle (12c) 中自动删除临时表吗?

昨天我执行了以下 DDL 来创建一个临时表:

Create global temporary table my_1st_t_table on commit preserve rows as
   select
      *
   from
      other_table
   where
      selected_col = 'T';

之后我执行了以下语句:

commit;

select count(*) from my_1st_t_table;

昨天,最后一个 select 语句返回了 2000 行。

之后我断开了我的 VPN 并关闭了我的客户端笔记本电脑。

今天我在重新启动计算机并重新连接到 VPN 后重新运行了最后一个 select 语句。

它返回了 0 行。所以这意味着该表仍然存在,但只是在我的会话之后删除了所有行。

但是,请问我的临时表什么时候会被删除?

提前致谢!

【问题讨论】:

  • 在 Oracle 中,全局临时表保持定义,直到您删除该表。

标签: oracle temp-tables


【解决方案1】:

Oracle 中的临时表与 MS SQL Server 等其他数据库平台中的临时表有很大不同,“临时”命名法总是会导致混淆。

在 Oracle 中,临时表就像其他表一样,不会被“删除”。但是,表中的行仅存在于插入行的会话的上下文中。一旦会话终止,假设会话没有删除行,Oracle 将删除该会话的表中的行。

所以底线是,数据是临时的,表结构是永久的,直到表被删除。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-01-16
  • 2010-09-10
  • 2012-01-04
  • 1970-01-01
  • 1970-01-01
  • 2015-12-02
  • 1970-01-01
相关资源
最近更新 更多