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條件。)
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29551564/viewspace-2153484/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- oracle點陣圖索引對DML操作的影響Oracle索引
- oracle全文索引之commit與DML操作Oracle索引MIT
- oracle中的條件語句Oracle
- Oracle Parallel DMLOracleParallel
- 條件過濾檢索
- ORACLE 分割槽索引UNUSABLE導致的DML操作失敗引起的血案Oracle索引
- Oracle OCP(02):條件和排序Oracle排序
- Oracle普通檢視和物化檢視的區別Oracle
- 11、Oracle中的檢視Oracle
- 條件和布林操作符
- 最佳化數倉業務檢視:過濾條件傳遞
- Oracle中left join中右表的限制條件Oracle
- Oracle 19C OGG基礎運維-03DML操作同步Oracle運維3D
- 檢視oracle臨時表空間佔用率的檢視Oracle
- Oracle OCP(24):檢視Oracle
- MySQL的DDL和DML操作語法MySql
- 車間操作檢視
- Oracle 如何高效的檢視官方文件Oracle
- 在哪裡可以檢視Response
- LINUX圖形化安裝ORACLE 前置條件LinuxOracle
- ORACLE 查詢條件出現關鍵字:&Oracle
- oracle按照表條件expdp匯出資料Oracle
- php 檢視郵件已讀PHP
- oracle 檢視錶空間Oracle
- oracle資料庫災難挽救應急方案之DML誤操作恢復Oracle資料庫
- Lua騷操作——三元條件運算子
- VUE檢視常規操作Vue
- Oracle檢視執行計劃的命令Oracle
- Oracle物化檢視的建立及使用(二)Oracle
- Oracle物化檢視的建立及使用(一)Oracle
- 4.2.8 檢視元件的Oracle重啟配置元件Oracle
- oracle檢視被鎖的表和解鎖Oracle
- SQLServer DML操作阻塞SELECT查詢SQLServer
- DDL、DML、DCL、DQL相關操作
- Sysbench-0.5改成只有DML操作
- 檢視oracle資料庫的連線數以及使用者檢視Oracle資料庫
- Oracle OCP(06):通用函式和條件表示式Oracle函式
- ORACLE sql merge into update where條件位置與效能消耗OracleSQL