【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/
● 本系列题目来源于作者的学习笔记,部分整理自网络,若有侵权或不当之处还请谅解
● 版权所有,欢迎分享本文,转载请保留出处
● 题目解答若有不当之处,还望各位朋友批评指正,共同进步