首页 > 解决方案 > 为什么向 SQL Server 中的表添加新列会破坏使用“*”的视图

问题描述

我们有一个表 X,其中包含 A、B 和 C 列。

我们创建一个视图 Y,即:

select * from X

向 中添加新列DX,视图返回错误数据。

据我所知,发生这种情况是因为视图使用了'*',但为什么呢?

标签: sqlsql-serverview

解决方案


听起来您正在使用一个数据库,该数据库在编写视图时会对其进行编译——但不会检测到架构更改。

我肯定在 SQL Server 中看到过这样的事情。在该数据库中,您需要添加该schemabinding选项。基本思想是您需要在任何架构更改后重新编译或重新创建视图。


推荐阅读