【DB筆試面試424】SQL Server哪類視圖是可以更新的?請舉例說明。
- 2019 年 10 月 11 日
- 筆記
題目
SQL Server哪類視圖是可以更新的?請舉例說明。
答案
答案:SQL Server 2000有兩種方法增強可更新視圖的類別:
(1)INSTEAD OF觸發器
可以在視圖上創建INSTEAD OF觸發器,從而使視圖可更新。當對一個定義了INSTEAD OF觸發器的視圖執行操作的時候,實際上執行的是觸發器中定義的操作,而不是觸發了觸發器的數據修改語句。因此,如果在視圖上存在INSTEAD OF觸發器,那麼通過該語句可更新相應的視圖。
(2)分區視圖
如果視圖屬於「分區視圖」的指定格式,那麼該視圖的可更新性將受到限制。如果視圖沒有INSTEAD OF觸發器,或者視圖不是分區視圖,那麼視圖只有滿足下列條件才可更新:
l SELECT_statement在選擇列表中沒有聚合函數,也不包含TOP、GROUP BY、UNION或DISTINCT子句。
l SELECT_statement的選擇列表中沒有派生列。派生列是由任何非簡單列表達式(使用函數、加法或減法運算符等)所構成的結果集列。
l SELECT_statement中的FROM子句至少引用一個表。SELECT_statement必須不能只包含非表格格式的表達式(即不是從表派生出的表達式)。例如,以下視圖是不可更新的:
CREATE VIEW NoTable AS
SELECT GETDATE() AS CurrentDate,
@@LANGUAGE AS CurrentLanguage,
CURRENT_USER AS CurrentUser;
About Me:小麥苗
● 本文作者:小麥苗,只專註於資料庫的技術,更注重技術的運用
● 作者部落格地址:http://blog.itpub.net/26736162/abstract/1/
● 本系列題目來源於作者的學習筆記,部分整理自網路,若有侵權或不當之處還請諒解
● 版權所有,歡迎分享本文,轉載請保留出處
● 題目解答若有不當之處,還望各位朋友批評指正,共同進步