View数据怎么和正常的不一样select?
How can View data be different from normal select?
我遇到了一个奇怪的情况,这似乎是一个错误!
我有一个视图(比如说 vwMyview),其中包含 3 个 select 来自联合在一起的相同表:
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
(我知道有更好的方法来创建这个视图)
问题是上述查询的结果与视图中简单 Select 的结果不同。
当我 select 从视图中查看 ToNodeID 的内容时,填充了 ToNodeTitle 数据。
有谁知道在什么情况下会发生这种情况?
它有时会发生,特别是当您对视图从中获取数据的基础对象进行 DDL 更改时。为了缓解这种情况,您可以使用与之前相同的代码发出 alter view
语句,或者使用 sys.sp_refreshview
存储过程。
同样的问题也可能发生在其他代码模块上;在这种情况下,使用 sys.sp_refreshsqlmodule
系统过程。
我遇到了一个奇怪的情况,这似乎是一个错误!
我有一个视图(比如说 vwMyview),其中包含 3 个 select 来自联合在一起的相同表:
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
(我知道有更好的方法来创建这个视图)
问题是上述查询的结果与视图中简单 Select 的结果不同。 当我 select 从视图中查看 ToNodeID 的内容时,填充了 ToNodeTitle 数据。
有谁知道在什么情况下会发生这种情况?
它有时会发生,特别是当您对视图从中获取数据的基础对象进行 DDL 更改时。为了缓解这种情况,您可以使用与之前相同的代码发出 alter view
语句,或者使用 sys.sp_refreshview
存储过程。
同样的问题也可能发生在其他代码模块上;在这种情况下,使用 sys.sp_refreshsqlmodule
系统过程。