請原諒我問了一個愚蠢的問題。
在 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 行。所以這意味著該表仍然存在,但在我的會話之后只洗掉了所有行。
但是,請問我的臨時表什么時候會被洗掉?
提前致謝!
uj5u.com熱心網友回復:
Oracle 中的臨時表與其他資料庫平臺(如 MS SQL Server)中的臨時表有很大不同,“臨時”命名法總是會導致混淆。
在 Oracle 中,臨時表就像其他表一樣,不會被“洗掉”。但是,表中的行僅存在于插入行的會話的背景關系中。一旦會話終止,假設會話沒有洗掉行,Oracle 將洗掉該會話的表中的行。
所以底線是,資料是臨時的,表結構是永久的,直到表被洗掉。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/414336.html
標籤:
上一篇:Oracle-比較兩組列是否相等
