Mysql更新檢視限制
阿新 • • 發佈:2019-01-23
老司機直接上路了.
前提:
基本關係如果改變,必須立即反映到設計的檢視上
但是通過檢視去更新則必須注意以下條件:
1、如果檢視有一個基本關係的簡單查詢生成,而且它還包含了基本關係中的主關鍵字或是候選關鍵字,則可以通過這個檢視進行更新操作。
2、不允許對涉及到多個基本關係的檢視進行更新。
3、如果檢視的生成中涉及到聚集或是分組操作,則不允許通過這個檢視進行更新。
ISO標準給出的檢視的可更新充要條件為:
1、沒有指定DISTINCT,即重複元組未從查詢結果中消除;
2、定義查詢的SELECT列表中的每個元素均為列名(而不是常量,表示式或聚合函式),且列名出現不能多於一次;
3、FROM子句只能指定一個表,即檢視必須有一個源表且使用者有請求該表的許可權。如果源表本身就是一個檢視,那麼檢視必須滿足這些條件。因此,排除了基於連線、並(UNION)、交(INTERSECT)或差(EXCEPT)操作的所有檢視;
4、where子句不能包含任何引用了FROM子句的表的巢狀SELECT操作。
5、定義查詢不能有GROUP BY或HAVING子句。