本篇文章給大家分享的是有關Oracle 視圖可以進行DML操作的條件有哪些,小編覺得挺實用的,因此分享給大家學習,希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。
條件一:在連接視圖中不能有Order by、Group by、connetc by等語句排序語句。
條件二:基礎表中所有的NOT NULL列都必須在這個視圖中。
條件三:需要更新的列不是虛擬列。
條件四:不能夠具有分組函數。
除了以上幾個限制條件之外,若需要在視圖上進行DML操作的話,則在建立視圖的Select語句中,還不能夠有集合運算符、子查詢等等。以上這些是一些必須要滿足的基本條件,缺一不可。否則的話,針對視圖的DML操作,就會以失敗告終。
但是,并不是說符合了上面這個幾個條件后,視圖就可以暢所無阻的進行數據更新了,其仍然必須符合一定的規則。這其中,最重要的就是鍵值保存表規則。
如果連接視圖中的一個基礎表的鍵在他的視圖中仍然存在,并且在連接視圖中仍然是主鍵,則這個基礎表就為鍵值保存表。在連接視圖上,對視圖進行插入、刪除、更新等操作時,一次只能夠對視圖中的一個鍵值保存表進行更新。
with check option對于違反視圖選擇范圍的數據行被插入,將受WITH CHECK OPTION檢查
視圖上的DML 操作:
DML操作應遵循的原則:
1.簡單視圖可以執行DML操作;
2.在視圖包含GROUP 函數,GROUP BY子句,DISTINCT關鍵字時不能刪除數據行;
3.在視圖不出現下列情況時可通過視圖修改基表數據或插入數據:
a.視圖中包含GROUP 函數,GROUP BY子句,DISTINCT關鍵字;
b.使用表達式定義的列;
c.ROWNUM偽列。
d.基表中未在視圖中選擇的其他列定義為非空且無默認值。
WITH CHECK OPTION 子句
通過視圖執行的INSERTS和UPDATES操作不能創建該視圖檢索不到的數據行, 因為它會對插入或修改的數據行執行完整性約束和數據有效性檢查。 (也就是說在執行INSERTS、UPDATES時,WHERE條件中除需要INSERT、UPDATE本身的限制條件之外,還需要加上視圖創建時的WHERE條件。)
以上就是Oracle 視圖可以進行DML操作的條件有哪些,小編相信有部分知識點可能是我們日常工作會見到或用到的。希望你能通過這篇文章學到更多知識。更多詳情敬請關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。