[英]Need to update an Oracle view, but the base table doesn't exist
我正在嘗試對oracle數據庫上的視圖進行非常小的更改,但令我感到困惑的是,我要更改的視圖的基本表/視圖似乎不存在。
首先,我這樣做:
從all_views中選擇文本,其中view_name ='(視圖名稱)';
並獲得了視圖文本,當然是這樣的:
選擇(字段)來自(表)
嘗試單獨運行此查詢將返回一個錯誤,指出該表或視圖不存在。 搜索表名列表和all_表上的視圖將不返回任何內容。 使用相同的源select語句創建一個新視圖會告訴我,因為該表或視圖不存在,所以無法創建該視圖。 現在,這是一個生產數據庫,因此應該可以正常工作,因為我可以使用現有視圖。 我對oracle數據庫沒有太多經驗,因此我可能在這里缺少一些東西。
我敢打賭,該視圖位於另一個架構中。 這是否返回與您的第一個查詢相同的結果:
select text from all_views where view_name='(view name)' and owner = user;
如果沒有返回任何行,則需要找到視圖的所有者:
select owner from all_views where view_name = '(view_name)';
並將您的SQL更改為
select (fields) from (view_owner).(table);
即使沒有基表,也可以通過“ FORCE”選項創建視圖(“ NO FORCE”為
默認值)通過這種方式:
CREATE FORCE VIEW test_view AS
SELECT c1, c2 FROM test_table; -- table, which does not exist yet.
由於我們未使用FORCE選項,因此未創建視圖。但是,嘗試訪問
視圖給出錯誤,因為表TEST_TABLE還不存在。
通過使用“ FORCE”,我們還可以通過雙表(oracle的默認表)創建視圖。
1-示例:創建力視圖v1,從對偶中選擇a,b,c;
警告:創建視圖時出現編譯錯誤。
2-示例:創建強制視圖v2作為select * from dual;
答:視圖已創建。
哇沒關系 他們甚至都不要求我這樣做。 我錯過了原始電子郵件中的那部分。
您應該使用force關鍵字。
create force view my_view as elect column1 from table_test -- table is not exists here..
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.