SQL SERVER中添加了表字段后,与此表相关的视图为什么不会同步更新(200分)

  • 主题发起人 主题发起人 blue_morning
  • 开始时间 开始时间
B

blue_morning

Unregistered / Unconfirmed
GUEST, unregistred user!
举例:
Table1
ID
Name
Table2
ID
Table1ID
Name
View:
SELECT dbo.Table2.*, dbo.Table1.Name AS ParentName,
FROM dbo.Table1 INNER JOIN
dbo.Table2 ON dbo.Table1.ID = dbo.Table2.Table1ID

我在表Table2中加了一个字段:Address,但是这个字段并不会就出现在视图中,一定要在企业管理器的视图设计Run一下才会出现这个字段,是什么原因?
 
是这样!它不会自动变的,因为--
sqlserver有自己的优化机制,当建立view之后,其内部存储的并非象你写的那样(包含*的语句),因此增加的字段不会自动到view中来,需要重新建立这个view。
不仅如此,假如你删除table2中的某个字段,那么访问该view会报错的,原因相同。
 
那么楼上的,SQLSERVER大概将其存成了什么样子呢?
 
View:
SELECT dbo.Table2.*, dbo.Table1.Name AS ParentName,
FROM dbo.Table1 INNER JOIN
dbo.Table2 ON dbo.Table1.ID = dbo.Table2.Table1ID
系统将其存成这样
将其存成
SELECT dbo.Table2.ID, dbo.Table2.Table1ID, dbo.Table2.Name, dbo.Table1.Name AS ParentName,
FROM dbo.Table1 INNER JOIN
dbo.Table2 ON dbo.Table1.ID = dbo.Table2.Table1ID
 
多人接受答案了。
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
937
SUNSTONE的Delphi笔记
S
I
回复
0
查看
593
import
I
I
回复
0
查看
638
import
I
后退
顶部