sql-server - 表架构更新后错误的列值 SQL Server View

标签 sql-server views alter-table

我总是问自己,为什么如果在 SQL Server 上有两个表,我会创建这样的 View :

CREATE VIEW vw_MyView 
AS
SELECT T1.*, T2.ClientName FROM Table1 T1 inner join Table2 T2 on T1.ID_Client=T2.ID_Client

当我需要向表 1 添加字段时, View 显示值错位?第一列的值显示在第二列,依此类推!

这发生在我测试的每个版本的 SQL Server 上。谁能告诉我为什么会发生这种情况以及如何解决?

这种行为会带来很大的问题,特别是派生 View 。 谢谢

最佳答案

更新架构后,您应该刷新依赖于架构的所有 View 的 View 元数据:

EXEC sp_refreshview @viewName

@viewName 变量保存 View 的名称。您可以在脚本中使用此存储过程,该脚本可以获取依赖于表的 View 以便动态刷新它们,或者您可以直接浏览所有 View (SELECT TABLE_NAME FROM INFORMATION_SCHEMA.VIEWS)并调用存储过程在每个 View 上。

这还有一个额外的好处,就是发现任何因架构更改而无效的 View 并标记它们,因为它们会在调用 SP 时出错。

关于sql-server - 表架构更新后错误的列值 SQL Server View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30081585/

相关文章:

postgresql - Postgres 将列从没有时区的时间更改为 int

sql-server - 如何让我的 webApp 在不同的 DBMS 之间平滑切换(DB Independency)?

android - 允许单个 subview 溢出 View 组边界的方法?

mysql - H2 添加多列 MySQL 语法

MySQL: View 与存储过程

java - 如何永远隐藏 View

mysql - SQL ALTER TABLE 排除列

c# - 如何用C#获取Sql Server 2005的列描述?

mysql - 由于执行前错误 0xc020802e,我无法将 CSV 导入 Microsoft SQL Server Management Studio 2014

python - 使用 pymssql 将数据插入 SQL Server 表