我有過表的視圖。事實證明,表格每天晚上都會移動並更新其版本。這確保了數據庫中始終存在預期名稱的表格,但我無法找到一種方法使我的視圖繼續指向表格的當前版本。無論創建視圖時存在哪個表格,我最終都會指出這個表格,即使它移動並過時。延遲表名稱解析查看
ViewA:
select a, b, c from todays_table;
todays_table
保持最新一整天,然後在晚上它被重命名爲todays_table01
。視圖A現在指向todays_table01
,並且新表格顯示爲todays_table
。再次,todays_table
是最新的,但不再是ViewA
。
是否有延遲表名稱解析直到視圖中使用的方法嗎?我一直無法獲得EXECUTE IMMEDIATE
爲SELECT
聲明工作。我想如果我使用了一個遊標,我可以得到一個動態的SQL語句,但我從來沒有需要這些,我不知道它們是否是正確的路徑。我讀了AUTO_REVAL
,但我相信這隻會延遲解決方案,直到第一次使用該視圖並且當晚仍然過時。
我當然可以,請停止使用視圖,只要將複雜的查詢到我的程序,但也有它需要的,所以我想落回在此之前消除所有其他解決方案的許多地方。
這將是理想的消除臨時表,只是有主表全天接收更新,但是這是我無法理解,因爲我什麼都不知道RPG II和OCL。
感謝您的閱讀。
編輯 Per @Mr。 Llama的建議,我嘗試使用同義詞和別名指向todays_table
,然後讓我的觀點指向同義詞。不幸的是在這種情況下,視圖使用別名來解決在創建實際的表名這樣的觀點繼續當它被重命名爲todays_table01
,雖然別名繼續引用todays_table
指向todays_table
。
編輯2 我接受@ mustaccio的答案,因爲它的工作和將是一個合理的辦法解決這個問題,如果我能得到持續的參數,他們需要的地方。我特別的項目需要靈活性,所以我實際上會跳上夜間流程的潮流,並添加一個程序來重新創建我的意見後,過程混亂,他們的引用作爲@ danny117建議。
謝謝大家誰回答說,雖然,我學到了很多關於如何將所有這些作品一起工作。
聽起來像是一個同義詞的工作。將觀點指向同義詞,然後更新同義詞以指向當前「活動」表。 –
進入創建新日常表的過程,並在那裏創建視圖。 – danny117
每次使用前創建並替換視圖。 – danny117