修改视图中的数据能否改变该视图所对应的表中的数据 本人刚接触SQL,不知道修改视图中的数据能不能同时改变该视图所对应的表中的数据,在百度上查了一下,有的说能,有的说不能,晕啊。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 SQL2000不行,SQL2008可以.建议LZ测试一下不就知道了吗. 我做了一个实验,说明了有时候,可以删除视图的数据,而有时候是不可以的,和你百度出来的结果是一样的,第一个视图的数据,可以删除,是因为视图只有一个表,而的个视图就能删除数据,因为第二个视图是2个表的关联:--1.建表select * into temp_1from sys.objectsselect * into temp_2from sys.tables--2.创建视图create view dbo.v_temp_1asselect * from temp_1go--3.通过视图删除数据delete from dbo.v_temp_1/*(153 行受影响)*/select * from temp_1/*(0 行受影响)*/--4.再创建视图create view dbo.v_temp_joinasselect t2.*from temp_1 t1inner join temp_2 t2 on t1.object_id = t2.object_idgo--5.删除视图的数据,报错了delete from dbo.v_temp_join/*消息 4405,级别 16,状态 1,第 1 行视图或函数 'dbo.v_temp_join' 不可更新,因为修改会影响多个基表。*/ 只是修改,一般没问题。如果视图是多张表的join,你不可以修改那些关联字段,也不可以新增、删除,而是要在视图里面创建一个替代的触发器。 这个查询怎么写? 数据库复制 表结构转换 如何解决:在Win2003Server下安装SQL2000,提示cd key无法验证? SQL 如何判斷一个栏位(编号)是否有断码 本地SQLSERVER中表的数据上传到远程SQL SERVER中,断网时的数据处理,急急急!!!!! 请问这个SQL语句该怎么写 高手求助,急求 SQL简单查询问题! 触发器问题,高手帮我 請教sql查詢每一步的具體過程 sql连接数据库updata出问题
SQL2008可以.
建议LZ测试一下不就知道了吗.
我做了一个实验,说明了有时候,可以删除视图的数据,而有时候是不可以的,和你百度出来的结果是一样的,
第一个视图的数据,可以删除,是因为视图只有一个表,而的个视图就能删除数据,因为第二个视图是2个表的关联:
--1.建表
select * into temp_1
from sys.objectsselect * into temp_2
from sys.tables
--2.创建视图
create view dbo.v_temp_1
asselect * 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' 不可更新,因为修改会影响多个基表。
*/
如果视图是多张表的join,你不可以修改那些关联字段,也不可以新增、删除,而是要在视图里面创建一个替代的触发器。