修改视图中的数据能否改变该视图所对应的表中的数据

wanghong_314 2013-10-23 04:12:57
本人刚接触SQL,不知道修改视图中的数据能不能同时改变该视图所对应的表中的数据,在百度上查了一下,有的说能,有的说不能,晕啊。
...全文
11039 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
gonggan110 2015-08-11
  • 打赏
  • 举报
回复
引用 1 楼 Imaor 的回复:
视图,呵呵 视图是用来看的
这个哥们说得对,修改视图会不会修改数据表,应该是个伪命题。就不应该去修改视图。
言若、 2015-08-07
  • 打赏
  • 举报
回复
对视图进行操作不会影响原表中的数据
wanghong_314 2013-10-24
  • 打赏
  • 举报
回复
谢谢,因为我没有测试环境,目前只是在看书,所以谢谢大家的回复!
Cloud_Hero 2013-10-24
  • 打赏
  • 举报
回复
只是修改,一般没问题。 如果视图是多张表的join,你不可以修改那些关联字段,也不可以新增、删除,而是要在视图里面创建一个替代的触发器。
LongRui888 2013-10-23
  • 打赏
  • 举报
回复
引用 楼主 wanghong_314 的回复:
本人刚接触SQL,不知道修改视图中的数据能不能同时改变该视图所对应的表中的数据,在百度上查了一下,有的说能,有的说不能,晕啊。
我做了一个实验,说明了有时候,可以删除视图的数据,而有时候是不可以的,和你百度出来的结果是一样的, 第一个视图的数据,可以删除,是因为视图只有一个表,而的个视图就能删除数据,因为第二个视图是2个表的关联:


--1.建表
select * into temp_1
from sys.objects

select * into temp_2
from sys.tables


--2.创建视图
create view dbo.v_temp_1
as

select * from temp_1
go


--3.通过视图删除数据
delete from dbo.v_temp_1
/*
(153 行受影响)
*/

select * from temp_1
/*
(0 行受影响)
*/


--4.再创建视图
create view dbo.v_temp_join
as
select t2.*
from temp_1 t1
inner join temp_2 t2
        on t1.object_id = t2.object_id
go


--5.删除视图的数据,报错了
delete from dbo.v_temp_join
/*
消息 4405,级别 16,状态 1,第 1 行
视图或函数 'dbo.v_temp_join' 不可更新,因为修改会影响多个基表。
*/
IEEE_China 2013-10-23
  • 打赏
  • 举报
回复
2005以后的好像都 可以查看,修改,删除, 视图对应的 操作和操作表的语句是一样的,只不过对象由表改为视图而已。
發糞塗牆 2013-10-23
  • 打赏
  • 举报
回复
没有2005的环境,但是2008试过是可以的
唐诗三百首 2013-10-23
  • 打赏
  • 举报
回复
SQL2000不行, SQL2008可以. 建议LZ测试一下不就知道了吗.
--小F-- 2013-10-23
  • 打赏
  • 举报
回复
视图是一个虚拟表 是不会修改原始表的数据的
IEEE_China 2013-10-23
  • 打赏
  • 举报
回复
视图,呵呵 视图是用来看的

34,590

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧