SQL Server視圖數據更改的常見限制條件
SQL Server視圖相信大家都比較熟悉了,下面就為您介紹SQL Server視圖數據更改的常見限制條件,如果您對SQL Server視圖方面感興趣的話,不妨一看。
當用戶更新視圖中的數據時,其實更改的是其對應的數據表的數據.無論是對視圖中的數據進行更改,還是在視圖中插入或者刪除數據,都是類似的道理.但是,不是所有SQL Server視圖都可以進行更改.如下面的這些視圖,在SQL Server數據庫中就不能夠直接對其內容進行更新,否則,系統會拒絕這種非法的操作.
(1) Group By子句
如在一個SQL Server視圖中,若采用Group By子句,對視圖中的內容進行了匯總。則用戶就不能夠對這張視圖進行更新。這主要是因為采用Group By子句對查詢結果進行匯總在后,視圖中就會丟失這條紀錄的物理存儲位置。如此,系統就無法找到需要更新的紀錄。若用戶想要在視圖中更改數據,則數據庫管理員就不能夠在視圖中添加這個Group BY分組語句。
(2) Distinct關鍵字
如不能夠使用Distinct關鍵字。這個關鍵字的用途就是去除重復的紀錄。如沒有添加這個關鍵字的時候,視圖查詢出來的紀錄有250條。添加了這個關鍵字后,數據庫就會剔除重復的紀錄,只顯示不重復的50條紀錄。此時,若用戶要改變其中一個數據,則數據庫就不知道其到底需要更改哪條紀錄。因為視圖中看起來只有一條紀錄,而在基礎表中可能對有的紀錄有幾十條。為此,若在視圖中采用了Distinct關鍵字的話,就無法對視圖中的內容進行更改。
(3) AVG、MAX等函數
如果在視圖中有AVG、MAX等函數,則也不能夠對其進行更新。如在一張視圖中,其采用了SUN函數來匯總員工的工資時,此時,就不能夠對這張表進行更新。這是數據庫為了保障數據一致性所添加的限制條件。
小結: 可見,試圖雖然方便、安全,但是,其仍然不能夠代替表的地位。當需要對一些表中的數據進行更新時,我們往往更多的通過對表的操作來完成。因為對視圖內容進行直接更改的話,需要遵守一些限制條件。在實際工作中,更多的處理規則是通過前臺程序直接更改后臺基礎表。至于這些表中數據的安全性,則要依靠前臺應用程序來保護。確保更改的準確性、合法性。
【編輯推薦】