gpt4 book ai didi

sql - 在 SQL Server 中,表添加一列。导致 View 错误

转载 作者:行者123 更新时间:2023-12-02 07:36:04 25 4
gpt4 key购买 nike

在 SQL Server 中,使用两个表创建一个 View 。其中一个表在 View 中使用了 *

然后我向表中添加一列。现在这会导致 View 错误。

必须重建 View 才能解决这个问题。

如果这个表使用了很多 View ,如何识别相关 View 并重建它们?

有几种方法?

谢谢!

测试环境:SQL Server 2008

测试 SQL:

 if exists(select * from sys.objects where name='tblTestA' and type='u')
DROP TABLE tblTestA

create table tblTestA(Part varchar(10),Qty int)
insert into tblTestA values('A',10)
insert into tblTestA values('B',20)
go

if exists(select * from sys.objects where name='tblTestB' and type='u')
DROP TABLE tblTestB
GO

create table tblTestB(Part varchar(10),Price decimal(9,4))
GO

insert into tblTestB values('A',1.1)
insert into tblTestB values('B',2.2)
GO

if exists(select * from sys.objects where name='v_test' and type='v')
DROP VIEW v_test
go

create View v_test
as
select a.*,b.Price
from tblTestA a, tblTestB b
where a.Part=b.Part
go

执行:

select * from v_test 
go

结果:

Part Qty Price
A 10 1.1000
B 20 2.2000

添加一列

alter table tblTestA add Remark nvarchar(200) not null default('test')
go

执行:

select * from v_test 
go

结果:

Part Qty Price
A 10 test
B 20 test

最佳答案

如果您创建 View WITH SCHEMABINDING,您将不会遇到这个问题。对于您的 View ;-) 您可以使用 sp_refreshview .

要查找哪些 View 依赖于哪些表,您可以使用 GUI,但它的扩展性不是很好。相反,我建议您使用系统管理 View ,例如sys.sql_expression_dependencies .这使您可以迭代依赖 View 并为每个 View 发出 exec sp_refreshview

关于sql - 在 SQL Server 中,表添加一列。导致 View 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16390941/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com