Oracle 中会自动删除临时 table 吗?
Would a Temporary table be dropped automatically in Oracle?
请原谅我问一个愚蠢的问题。
Oracle (12c) 中会自动删除临时 table 吗?
昨天我执行了以下 DDL 来创建一个临时 table:
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 行。所以这意味着 table 仍然存在,但只是在我的会话后删除了所有行。
但是,请问我的临时 table 什么时候被丢弃?
提前致谢!
Oracle 中的临时 table 与其他数据库平台(例如 MS SQL Server 中的临时 table 有很大不同,并且“临时”命名总是会导致混淆。
在 Oracle 中,临时 table 就像其他 table 一样,不会被“删除”。但是,table 中的行仅存在于插入这些行的会话的上下文中。一旦会话终止,假设会话没有删除行,Oracle 将删除该会话的 table 中的行。
所以最重要的是,数据是临时的,table 结构是永久的,直到 table 被删除。
请原谅我问一个愚蠢的问题。
Oracle (12c) 中会自动删除临时 table 吗?
昨天我执行了以下 DDL 来创建一个临时 table:
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 行。所以这意味着 table 仍然存在,但只是在我的会话后删除了所有行。
但是,请问我的临时 table 什么时候被丢弃?
提前致谢!
Oracle 中的临时 table 与其他数据库平台(例如 MS SQL Server 中的临时 table 有很大不同,并且“临时”命名总是会导致混淆。
在 Oracle 中,临时 table 就像其他 table 一样,不会被“删除”。但是,table 中的行仅存在于插入这些行的会话的上下文中。一旦会话终止,假设会话没有删除行,Oracle 将删除该会话的 table 中的行。
所以最重要的是,数据是临时的,table 结构是永久的,直到 table 被删除。