oracle 视图带条件,Oracle视图可以进行DML操作的条件
條件一:在連接視圖中不能有Order by、Group by、connetc by等語句排序語句。
條件二:基礎(chǔ)表中所有的NOT NULL列都必須在這個(gè)視圖中。
條件三:需要更新的列不是虛擬列。
條件四:不能夠具有分組函數(shù)。
除了以上幾個(gè)限制條件之外,若需要在視圖上進(jìn)行DML操作的話,則在建立視圖的Select語句中,還不能夠有集合運(yùn)算符、子查詢等等。以上這些是一些必須要滿足的基本條件,缺一不可。否則的話,針對視圖的DML操作,就會以失敗告終。
但是,并不是說符合了上面這個(gè)幾個(gè)條件后,視圖就可以暢所無阻的進(jìn)行數(shù)據(jù)更新了,其仍然必須符合一定的規(guī)則。這其中,最重要的就是鍵值保存表規(guī)則。
如果連接視圖中的一個(gè)基礎(chǔ)表的鍵在他的視圖中仍然存在,并且在連接視圖中仍然是主鍵,則這個(gè)基礎(chǔ)表就為鍵值保存表。在連接視圖上,對視圖進(jìn)行插入、刪除、更新等操作時(shí),一次只能夠?qū)σ晥D中的一個(gè)鍵值保存表進(jìn)行更新。
with check option對于違反視圖選擇范圍的數(shù)據(jù)行被插入,將受WITH CHECK OPTION檢查
視圖上的DML 操作:
DML操作應(yīng)遵循的原則:
1.簡單視圖可以執(zhí)行DML操作;
2.在視圖包含GROUP 函數(shù),GROUP BY子句,DISTINCT關(guān)鍵字時(shí)不能刪除數(shù)據(jù)行;
3.在視圖不出現(xiàn)下列情況時(shí)可通過視圖修改基表數(shù)據(jù)或插入數(shù)據(jù):
a.視圖中包含GROUP 函數(shù),GROUP BY子句,DISTINCT關(guān)鍵字;
b.使用表達(dá)式定義的列;
c.ROWNUM偽列。
d.基表中未在視圖中選擇的其他列定義為非空且無默認(rèn)值。
WITH CHECK OPTION 子句
通過視圖執(zhí)行的INSERTS和UPDATES操作不能創(chuàng)建該視圖檢索不到的數(shù)據(jù)行, 因?yàn)樗鼤Σ迦牖蛐薷牡臄?shù)據(jù)行執(zhí)行完整性約束和數(shù)據(jù)有效性檢查。 (也就是說在執(zhí)行INSERTS、UPDATES時(shí),WHERE條件中除需要INSERT、UPDATE本身的限制條件之外,還需要加上視圖創(chuàng)建時(shí)的WHERE條件。)
總結(jié)
以上是生活随笔為你收集整理的oracle 视图带条件,Oracle视图可以进行DML操作的条件的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python3精要(51)--抛出异常与
- 下一篇: go语言基础到提高(1)-hello,w