注册 登录
编程论坛 SQL Server论坛

insert into 向视图插入记录

朝阳 发布于 2007-09-07 20:26, 3305 次点击


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

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

为什么呢?课本上有这样的写法呀?
3 回复
#2
purana2007-09-07 20:38
视图的缺点:
当用户试图修改视力的某些数据时,sql server2000必须把必转化为对基本表的某些数据的修改.对于简单的视图来说,这是很方便的,但是对于比较复杂的视图,则可能是不可修改的.
#3
西风独自凉2007-09-08 10:20
視圖的資料是來源於表表關聯得出的數據。。。

視圖是用於表與表之間的關聯。。。新增,修改時一般不採用。。。。
#4
provoke2007-09-09 13:18
视图类似一个窗口,对视图的一切操作最终都要转换为对基本表的操作。

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

例:
表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编辑过]

1