SQL Server:视图列数据类型在基础表数据类型更改时不会更改?

时间:2012-11-03 00:24:36

标签: sql-server

如果我有这样的表MyTable

Value1 decimal

然后我有一个视图MyView

Select SUM(Value1) as SumValue1 from MyTable

当我在视图的列部分下查看SSMS中视图的列数据类型时,它是一个小数。

现在,如果我将表修改为:

Value1 real

如果我在SSMS中刷新视图的列部分,则数据类型仍为小数。现在,如果我打开视图并重新保存它,则数据类型将变为浮点数。

这是怎么回事?在重新保存之前,视图似乎没有改变。

1 个答案:

答案 0 :(得分:6)

是的,这是预料之中的。可以通过创建视图completely invalid的方式更改表。如果要防止这种情况发生,可以在创建视图时使用WITH SCHEMABINDING选项。来自链接的文章:

将视图绑定到基础表的模式。指定SCHEMABINDING时,不能以影响视图定义的方式修改基表。必须首先修改或删除视图定义本身,以删除要修改的表的依赖关系。