添加字段会以某种方式影响视图结果



有一个非常奇怪的情况。由于各种原因,我们有一堆这样做的表:

TableA已重命名为TableASource,并创建了一个名为TableA的视图TableB被重命名为TableBSource,并创建了一个名为TableB 的视图

这一切都很好,而且已经持续了很长一段时间。昨天,我向TableASource、TableBSource(以及其他字段)添加了一个新字段。这是一个名为"createDate"的字段,是一个smallDateTime,没有默认值为getDate()的null。你可能会认为这对任何事情都没有影响。今天,用户首先说的是,他们可以在预期数据的位置看到这些日期。E.G Lest说,我们有一个页面从名为TableA的视图中提取了10个字段,而不是显示这10个字段。它现在正确显示了9个,并随机显示了添加到TableASource的新createDate字段中的值(如果重要的话,将其放在页面上的第二个字段中)

我很快删除了所有这些新的createDate字段,问题就消失了。这怎么可能发生?向TableASource添加字段如何影响TableA视图的结果?

使用SQLServer2008 r2

回答下面的额外问题。这是一个名为"bayTrainCourses"的视图,如上表A所述:

SELECT  btc.course_id, btc.course_name, btc.course_status, btc.course_expiry, btc.course_startdate, btc.course_enddate, btc.course_type, btc.site_id, btc.channelid, btc.exam_type, btc.enroll_type, btc.last_updated, btc.compid, btc.TOC, btc.rdone, btc.autoqualify, btc.courseIntroId, btc.coursePurposeId, btc.courseBackgroundId,btc.courseObjectivesId, intro.    [content] AS course_intro, purpose.[content] AS course_purpose, background.[content] AS course_background, 
objectives.[content] AS course_objectives
FROM dbo.bayTrainCoursesSource AS btc 
LEFT OUTER JOIN dbo.RTE AS intro ON btc.courseIntroId = intro.pk 
LEFT OUTER JOIN dbo.RTE AS purpose ON btc.coursePurposeId = purpose.pk 
LEFT OUTER JOIN dbo.RTE AS background ON btc.courseBackgroundId = background.pk 
LEFT OUTER JOIN dbo.RTE AS objectives ON btc.courseObjectivesId = objectives.pk

选择是:

select * from baytraincourses....

编辑-由于一些试验错误。事实证明,这次审判实际上是来自JohnS下面的建议。重新创建视图。。。。我将该视图重命名为baytraincourses_breaked。然后右键单击>script view as>create to>,然后我将"baytraincourses_breaked"更改为"bayttraincourses",以使用原始名称重新创建另一个版本。现在页面正常工作。

我不太喜欢这种观点。老实说,我很少创建它们,我使用的是我最初没有编写的代码。每次添加新列时,我真的必须重新创建视图吗?当然不是,我该怎么办?

将新字段添加到TableASource后,需要重新创建视图。(即DROP VIEW TableA…然后CREATE VIEW TableA..)。

最新更新