标题:insert into 向视图插入记录
只看楼主
朝阳
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2007-9-2
 问题点数:0 回复次数:3 
insert into 向视图插入记录


INSERT INTO [he].[dbo].[View_1]
([学号]
,[姓名]
,[课程号]
,[Expr1])
VALUES
(106109,
'吴小',
5555,
106109);

此语句显示错误信息为:视图或函数 'he.dbo.View_1' 不可更新,因为修改会影响多个基表。

为什么呢?课本上有这样的写法呀?
搜索更多相关主题的帖子: insert 视图 记录 
2007-09-07 20:26
purana
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:广东-广州
等 级:版主
威 望:66
帖 子:6039
专家分:0
注 册:2005-6-17
得分:0 
视图的缺点:
当用户试图修改视力的某些数据时,sql server2000必须把必转化为对基本表的某些数据的修改.对于简单的视图来说,这是很方便的,但是对于比较复杂的视图,则可能是不可修改的.

我的msn: myfend@
2007-09-07 20:38
西风独自凉
Rank: 8Rank: 8
等 级:贵宾
威 望:43
帖 子:3380
专家分:28
注 册:2007-8-2
得分:0 
視圖的資料是來源於表表關聯得出的數據。。。

視圖是用於表與表之間的關聯。。。新增,修改時一般不採用。。。。

2007-09-08 10:20
provoke
Rank: 2
来 自:广州
等 级:新手上路
威 望:5
帖 子:175
专家分:0
注 册:2007-6-14
得分:0 
视图类似一个窗口,对视图的一切操作最终都要转换为对基本表的操作。

然而并非所有视图都是可以更新或插入的,例如由多表导出的视图就不可以更新。

例:
表1(*列1,列2,列3)
表2(*列1,列4,列5)
*标示的为主键

视图:
视图1:
create view 视图1
as
select 表1.列1,列2,列3,列4,列5 from 表1,表2 where 表1.列1=表2.表1

此时视图1就是不可插入的!因为对视图进行执行插入操作时,最终要转换为对基本表的插入操作,也就意味着向表1插入3列数据,但只向表2插入列4和列5两列数据,让列1留空!而表2的列1为主键,不允许空值……

[此贴子已经被作者于2007-9-9 13:19:53编辑过]


爱我至爱,至死不渝!
2007-09-09 13:18



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-168479-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.044910 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved