我在SQL環境中有一個需求,在特定情況下,過程中對錶(或視圖)A的所有引用實際上都使用表(或視圖)B.在iSeries上,我將使用OVRDBF命令來覆蓋對錶A與表B:OVRDBF文件(A)文件(B)。在SQL中等同於什麼?有一個嗎?是否存在與SQL中的iSeries OVRDBF命令等效的內容?
我的目標是結束一個無視覆蓋的過程。我不希望在滿足某些條件時指導表B中的處理的過程中使用條件邏輯。願景:
典型的情況下:只要調用程序
在特定的替代情況:執行OVRDBF當量,然後調用程序
我在SQL環境中有一個需求,在特定情況下,過程中對錶(或視圖)A的所有引用實際上都使用表(或視圖)B.在iSeries上,我將使用OVRDBF命令來覆蓋對錶A與表B:OVRDBF文件(A)文件(B)。在SQL中等同於什麼?有一個嗎?是否存在與SQL中的iSeries OVRDBF命令等效的內容?
我的目標是結束一個無視覆蓋的過程。我不希望在滿足某些條件時指導表B中的處理的過程中使用條件邏輯。願景:
典型的情況下:只要調用程序
在特定的替代情況:執行OVRDBF當量,然後調用程序
不知道該SQL環境支持的選項:
我相信DB2有一個CREATE ALIAS語句。將SQL寫入別名。
另一種可能性:在視圖上運行查詢:在哪裏執行OVRDBF,放下視圖並將其重建到所需的表格上。
愛德提到,如果你可以修改你的程序:
1)創建文件的別名(A)
CREATE ALIAS XYZ FOR A
2)修改程序引用,而不是A. XYZ
3)運行程序時使用文件B執行
DROP ALIAS XYZ;
CREATE ALIAS XYZ FOR B;
CALL PROCEDURE;
DROP ALIAS XYZ;
CREATE ALIAS XYZ FOR A;
如果你不能不同的程序,你不擔心同時訪問表A,你可以使用:
RENAME TABLE A TO C;
CREATE ALIAS A FOR B;
CALL PROCEDURE;
DROP ALIAS A;
RENAME TABLE C TO A;
在我對Ed的評論中,我表達了對使用別名時影響所有用戶和進程的擔憂。並非所有事情都最終指向別名正在指向的什麼?無論如何要讓這種方法更具體到單個用戶和/或過程? – JBell6 2009-02-06 15:01:08
我不喜歡這個答案的唯一的事情是,這兩個選項涉及臨時覆蓋每個人的參考。假設你想讓其他進程在'普通'對象上運行,可能涉及到一個額外的模式或類似的東西是合適的? – JBell6 2009-02-04 23:32:24