如何解决带视图的SQL Server存储过程 如果您已完成对基础表的架构更改:如果您已完成对表的数据更改,而不是架构更改:
我使用存储过程更改了表中的某些条目,这会影响视图。
视图何时更新?存储过程何时工作(在特定语句之后)或何时完成?
我正在使用SQL Server 2019(v15)。
解决方法
如果您已完成对基础表的架构更改:
它不会自动发生。您必须专门调用sp_refreshsqlmodule来刷新视图
EXEC sp_refreshsqlmodule 'SchemaName.ViewName'
对对象进行更改时应运行sp_refreshsqlmodule 影响其定义的模块的基础。否则, 查询或调用模块可能会产生意外结果。 要刷新视图,可以使用sp_refreshsqlmodule或 sp_refreshview具有相同的结果。
您还可以使用sp_refreshview刷新基本更改的视图。
EXEC sp_refreshview N'SchemaName.ViewName'
如果未使用架构绑定创建视图,则应将sp_refreshview为 当对视图基础的对象进行更改时运行 影响视图的定义。否则,视图可能会产生 查询时出现意外结果
通常最好的做法是使用SCHEMA BINDING
选项创建视图,这样可以避免对基础表进行模式更改。 Benefits of Schemabinding
如果您已完成对表的数据更改,而不是架构更改:
视图不过是存储的SQL语句。这是一个虚拟表。从视图中选择时,将在运行时运行相应的表查询。视图不会单独存储数据。因此,无需更新或刷新视图。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。