sql server-查看数据与正常选择有何不同



我面临一个奇怪的情况,似乎是一个bug!

我有一个视图(比方说vwMyview),它包含从UNIONed在一起的相同表中选择的3个:

SELECT c.*, r.ToNodeTitle, r.ToNodeID, r.ActivityDate FROM MYBB.[dbo].[ExContract] c inner join vwNodeStatus r on c.requestid = r.RequestID  where r.ToNodeID = 88 and r.statuscode in (0,1) 
UNION
SELECT c.*, r.ToNodeTitle, r.ToNodeID, r.ActivityDate FROM MYBB.[dbo].[ExContract] c inner join vwNodeStatus r on c.requestid = r.RequestID  where r.ToNodeID = 89 and r.statuscode in (0,1) 
UNION
SELECT c.*, r.ToNodeTitle, r.ToNodeID, r.ActivityDate FROM MYBB.[dbo].[ExContract] c inner join vwNodeStatus r on c.requestid = r.RequestID  where r.ToNodeID = 90 and r.statuscode = 7 

(我知道有更好的方法来创建此视图)

问题是,上述查询的结果与简单地从视图中选择的结果不同。当我从视图中选择时,ToNodeID的内容将填充ToNodeTitle数据。

有人知道在什么情况下会发生这种情况吗?

这种情况有时会发生,尤其是当您对视图获取数据的底层对象进行DDL更改时。为了减轻这种情况,您可以使用与以前相同的代码发出alter view语句,也可以使用sys.sp_refreshview存储过程。

其他代码模块也可能出现同样的问题;在这种情况下,使用sys.sp_refreshsqlmodule系统过程。

最新更新