[英]Temp table doesn't store updated values
我一直在嘗試創建一個臨時表並對其進行更新,但是當我 go 查看臨時表時,它沒有顯示任何更新的行
declare global temporary table hierarchy (
code varchar(5)
description varchar(30);
INSERT INTO session.hierarchy
SELECT code, 30_description
FROM table1
WHERE code like '_....';
SELECT *
FROM session.hierarchy;
這是一個經常被問到的問題。
將 DGTT 與 Db2(聲明全局臨時表)一起使用時,您需要知道默認是在COMMIT
操作后丟棄所有行。 這就是插入后表看起來為空的原因 - 如果啟用了自動提交,行將被刪除。 如果這不是您想要的,您應該在聲明表時使用on commit preserve rows
子句。
在創建存儲過程的時候, with replace
選項也很重要,這對於開發和測試來說往往是最友好的,並不是默認的。 否則,如果相同的 session 嘗試重復 DGTT 的聲明,則第二次和后續嘗試將失敗,因為 DGTT 已經存在。
有時on rollback preserve rows
使用問題確定也很有趣,但這種情況不太常用。
使用 DGTT 時,主要優點之一是您可以安排取消記錄表的填充(插入、更新),如果您有數百萬行要添加到 DGTT,這可以極大地提高性能。
因此建議是:
declare global temporary table ... ( )...
not logged
on commit preserve rows
with replace;
對於 DPF 安裝,還可以考慮使用distribute by hash (...)
獲得最佳性能。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.