用select *创建视图

时间:2014-03-28 15:11:57

标签: sql-server sql-view

我已使用CREATE VIEW dbo.myView AS SELECT * FROM dbo.myTable创建了一个视图。向myView添加列时,dbo.myTable未选择新列。有没有办法让我的视图选中表中的所有列,即使我添加列而不必更新视图?

1 个答案:

答案 0 :(得分:5)

没有。您必须通过重新创建或使用sp_refreshview来更新视图。

CREATE VIEW中记录了这一点:

  

如果未使用SCHEMABINDING子句创建视图,则应在对视图下方影响视图定义的对象进行更改时运行sp_refreshview。否则,查询时视图可能会产生意外结果。

而且SCHEMABINDING也没有帮助你 - 因为这会阻止你甚至使对基表进行更改。


通常,SELECT * ...是一种懒惰的简写,你应该使用它的唯一地方是IF EXISTS()测试。在其他任何地方,你基本上都是为了表现不佳(特别是如果其他人后来出现并在你的桌子上添加了一个包含每一行莎士比亚全集的新专栏)。