我听说视图是不能修改数据的,为什么我可以呢?

时间:2021-09-18 07:16:42
我听说视图是不能修改数据的,为什么我可以呢?

10 个解决方案

#1


视图里的数据都来自同一个基表的话,是可以修改的,
但如果来自己多表联合,就不能修改

#2


视图可以修改数据啊

#3


还有,就算来自同一个表,如果是用Count(),Sum(),vag()这此统计函数计算出来的,也是不能修改的

#4


視圖本來就可以修改數據的,隻是有一些約束,如樓上所說

#5


我的视图是两个表用inner join连的,没有用到聚合函数,这样也能修改吗?

#6


记得以前学FoxPro的时候,老师教我们:查询是不能更改数据的,视图可以修改数据,可能LZ记错了

#7


试图可以;

#8


修改视图时具有下列限制:

n  只要视图有一列不能隐式获取值,你就不能向视图插入数据。如果列允许NULL、有默认值、设置了IDENTITY属性或类型为ROWVERSION,则说明它可以隐式地获取值。

n  如果视图由一个联接查询(join query)定义,UPDATE或INSERT语句只能影响联接的一端。也就是说,INSERT语句必须定义目标列列表,这些列只能属于联接的一端。同样,UPDATE语句修改的列也必须都属于联接的一端。但是,你可以在查询的其他地方(如赋值语句的右端、查询筛选器等)引用任何列。你不能从由联接查询定义的视图中删除数据。

n  不能修改作为计算结果的列。标量表达式和聚合(aggregate)。SQL Server不会尝试改变数据库引擎的计算结果。

n  如果在创建或修改视图时指定了WITH CHECK OPTION选项,与视图的查询筛选器有冲突的INSERT或UPDTE语句将被拒绝。

#9


听谁说的?

#10


还是 paoluo(一天到晚游泳的鱼(學習.NET中)) 负责

#1


视图里的数据都来自同一个基表的话,是可以修改的,
但如果来自己多表联合,就不能修改

#2


视图可以修改数据啊

#3


还有,就算来自同一个表,如果是用Count(),Sum(),vag()这此统计函数计算出来的,也是不能修改的

#4


視圖本來就可以修改數據的,隻是有一些約束,如樓上所說

#5


我的视图是两个表用inner join连的,没有用到聚合函数,这样也能修改吗?

#6


记得以前学FoxPro的时候,老师教我们:查询是不能更改数据的,视图可以修改数据,可能LZ记错了

#7


试图可以;

#8


修改视图时具有下列限制:

n  只要视图有一列不能隐式获取值,你就不能向视图插入数据。如果列允许NULL、有默认值、设置了IDENTITY属性或类型为ROWVERSION,则说明它可以隐式地获取值。

n  如果视图由一个联接查询(join query)定义,UPDATE或INSERT语句只能影响联接的一端。也就是说,INSERT语句必须定义目标列列表,这些列只能属于联接的一端。同样,UPDATE语句修改的列也必须都属于联接的一端。但是,你可以在查询的其他地方(如赋值语句的右端、查询筛选器等)引用任何列。你不能从由联接查询定义的视图中删除数据。

n  不能修改作为计算结果的列。标量表达式和聚合(aggregate)。SQL Server不会尝试改变数据库引擎的计算结果。

n  如果在创建或修改视图时指定了WITH CHECK OPTION选项,与视图的查询筛选器有冲突的INSERT或UPDTE语句将被拒绝。

#9


听谁说的?

#10


还是 paoluo(一天到晚游泳的鱼(學習.NET中)) 负责