2 momo1210245571 momo1210245571 于 2015.07.20 11:59 提问

对视图 进行增删改 是否能改变其对应的基表的数据呀

sql问题: 删除视图中的数据,其对应的基表中的数据会发生改变吗?

4个回答

Evankaka
Evankaka   Ds   Rxr 2015.07.20 12:15

有些情况下会,有些情况下不能(比如视图里有sum.avg.count之类的)

u010289866
u010289866   2015.07.20 12:27

视图是从聚合函数来的话应该不会,因为映射回去有问题。有的数据库将视图实现成了临时表,SQL Server 2005好像就是。

strutce
strutce   Ds   Rxr 2015.07.20 14:25

如果你那个视图,是 单表的, 没写 触发器的。

那么 如果 删除视图中的数据 成功了,那么 表中的数据 就被删除了。

如果那个视图, 写了个 INSTEAD OF 触发器. 但是里面没有任何删除的动作。
那么 可能你 DELETE FROM 视图, 最后表的数据,一点也没变化, 也是可以的。

tongyi55555
tongyi55555   2015.07.20 19:51

mysql中可更新视图必须满足一定的条件,参见:http://blog.csdn.net/yangkai_hudong/article/details/7632085

要通过视图更新基本表数据,必须保证视图是可更新视图,即可以在INSET、UPDATE或DELETE等语句当中使用它们。对于可更新的视图,在视图中的行和基表中的行之间必须具有一对一的关系。还有一些特定的其他结构,这类结构会使得视图不可更新。

如果视图包含下述结构中的任何一种,那么它就是不可更新的:

(1)聚合函数;

(2)DISTINCT关键字;

(3)GROUP BY子句;

(4)ORDER BY子句;

(5)HAVING子句;

(6)UNION运算符;

(7)位于选择列表中的子查询;

(8)FROM子句中包含多个表;

(9)SELECT语句中引用了不可更新视图;

(10)WHERE子句中的子查询,引用FROM子句中的表;

(11)ALGORITHM 选项指定为TEMPTABLE(使用临时表总会使视图成为不可更新的)。

Csdn user default icon
上传中...
上传图片
插入图片