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

adding a field somehow effects a views results

情况很奇怪。由于各种原因,我们有一堆表格可以完成:

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

的视图

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

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

使用 SQLServer2008 r2

回答下面的额外问题。这是名为 'bayTrainCourses' 的视图,上面已将其描述为 TableA :

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是:

select * from baytraincourses....

正在编辑 - 由于一些试验出错。原来这次试用其实是下面JohnS的建议。重新创建视图...。我将视图重命名为 baytraincourses_broken。然后右键单击 > 脚本视图 > 创建 > 然后我将 'baytraincourses_broken' 更改为 'baytraincourses' 以使用原始名称重新创建另一个版本。现在页面工作了。

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

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