当前位置:首页 » 编程语言 » sql不能更新视图的情况
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

sql不能更新视图的情况

发布时间: 2022-10-28 09:18:08

1. 什么视图允许更新操作,什么视图不允许更新操作。 sql

(1)
若视图是基于多个表使用联接操作而导出的,那么对这个视图执行更新操作时,每次只能影响其中的一个表。
(2)
若视图导出时包含有分组和聚合操作,则不允许对这个视图执行更新操作。
(3)
若视图是从一个表经选择、投影而导出的,并在视图中包含了表的主键字或某个候选键,这类视图称为‘行列子集视图’。对这类视图可执行更新操作。

2. SQL视图 更新问题

视图本身是不保存数据的,每次对视图查询,会直接连到表上查询
但是你这个问题,要根据你的视图语句来做具体判断的
比如视图里有where条件,有group by等聚合函数等的话,原表数据变化了,视图的数据也有可能不变化。
举个例子吧:
A表
id type name
1 aa 张三
2 bb 李四

如果视图是:
create view v_tab
as
select * from a where type = 'aa'

那这样的话,在a表里如果插入一条type = ‘bb’的数据,视图的数据就不会有变化
不知道这样描述楼主清楚没

3. 利用sql语句如何更新视图

更新视图有以下三条规则:
(1) 若视图是基于多个表使用联接操作而导出的,那么对这个视图执行更新操作时,每次只能影响其中的一个表。
(2) 若视图导出时包含有分组和聚合操作,则不允许对这个视图执行更新操作。
(3) 若视图是从一个表经选择、投影而导出的,并在视图中包含了表的主键字或某个候选键,这类视图称为‘行列子集视图’。对这类视图可执行更新操作。

视图只有满足下列条件才可更新:
1、select语句在选择列表中没有聚合函数,也不包含TOP,GROUP BY,UNION(除非视图是分区视图)或DISTINCT子句。聚合函数可以用在FROM子句的子查询中,只要不修改函数返回的值。
2、select语句的选择列表中没有派生列。派生列是由任何非简单列表达式(使用函数、加法或减法运算符等)所构成的结果集列。
3、select语句中的FROM子句至少引用一个表。select语句不能只包含非表格格式的表达式(即不是从表派生出的表达式)。
4、INSERT,UPDATE和DELETE语句在引用可更新视图之前,也必须如上述条件指定的那样满足某些限制条件。只有当视图可更新,并且所编写的UPDATE或INSERT语句只修改视图的FROM子句引用的一个基表中的数据时,UPDATE和INSERT语句才能引用视图。
只有当视图在其FROM子句中只引用一个表时,DELETE语句才能引用可更新的视图。

4. 什么视图允许更新操作,什么视图不允许更新操作。 SQL题

(1) 若视图是基于多个表使用联接操作而导出的,那么对这个视图执行更新操作时,每次只能影响其中的一个表。
(2) 若视图导出时包含有分组和聚合操作,则不允许对这个视图执行更新操作。
(3) 若视图是从一个表经选择、投影而导出的,并在视图中包含了表的主键字或某个候选键,这类视图称为‘行列子集视图’。对这类视图可执行更新操作。

5. 在SQL 里哪些视图可以更新,哪些不可以更新。(要写500字的论文)希望提供全面一点的~

视图一般式可以更新的,但前提是不能有聚合函数或分组等。
在这个前提下:
1:简单视图
就是由一个表生成出来的视图,这种情况你更新她就和更新表一样
2:二次加工出来的简单视图
仍然是一个表出来的视图,但是视图中存在通过函数或计算二次加工出来的其他字段。更新的时候只要不更新这些加工出来的字段也是可以更新的。
3:组合视图
通过表之间关联联合等出来的复杂视图。这种视图更新的时候要注意你所更新的列要来自同一个表,也是可以更新的。
4:静态视图
这种视图等同于表可以直接更新,但是更新的数据尽在视图中反映出来,不反映到原表
5:其他视图
通过表函数等其他生成的更为复杂的视图。一般不可更新

6. sql怎么创建不可更新的视图

1L错误,如果视图只是单表组成的,是可以更新的. 但是你的视图是两个表得出的,里面有多表关联,这种情况是不能更新视图的. 如果要更新,建议使用触发器,分别更新单个表,从而达到相同的目的.

7. 在Sql Server 2000 的分区视图数据量太大导致中无法更新,怎么办

主要是长连接操作导致的死锁问题,多试几个优化方案试试

8. SQL语言视图更新

INSERT语句向视图插入数据,但应该注意的是:插入的数据实际上存放在基表中,而不是视图中;
updare好象不行,需要用到另一语句(忘了,呵呵)