sql - 为什么向 SQL Server 中的表添加新列会破坏使用“*”的视图
问题描述
我们有一个表 X,其中包含 A、B 和 C 列。
我们创建一个视图 Y,即:
select * from X
向 中添加新列D
时X
,视图返回错误数据。
据我所知,发生这种情况是因为视图使用了'*'
,但为什么呢?
解决方案
听起来您正在使用一个数据库,该数据库在编写视图时会对其进行编译——但不会检测到架构更改。
我肯定在 SQL Server 中看到过这样的事情。在该数据库中,您需要添加该schemabinding
选项。基本思想是您需要在任何架构更改后重新编译或重新创建视图。
推荐阅读
- vba - 如何在visual basic中查找并突出显示richtextbox中的下一个单词实例?
- java - org.json JSONObject 在从 Spring Boot 控制器返回时向 JSONObject 添加额外的对象
- mysql - 如何使用mysql从字符串中删除双引号
- java - 从 url 显示黑色顶部和底部加载图像
- php - 从 Yii1 中的 session 公共函数 search() 中获取 ID
- svn - 在现有主干中解耦大小代码并使用当前代码创建新主干的最佳方法
- xslt - XSL 转换返回空白值
- python - 根据第二列的值在 csv 中选择一个项目
- reactjs - 无法使用 graphQL 和 createPages 在 Gatsby 中进行转换
- python - 如何使用 GridSearchCV 获取所有模型(每组参数一个)?