SQL Server Mgmt Studio 让我发疯。
如果我创建一个 View 并从表中 SELECT '*',则一切正常,我可以保存 View 。 查看 View 的 SQL(例如,通过编写 CREATE 脚本)会发现“SELECT *”确实保存到 View 的 SQL 中。
但是,一旦我使用 GUI 重新打开 View (右键单击 > 修改),SELECT * 就会替换为表中所有列的列列表。
如何阻止 Management Studio 执行此操作?我希望我的“SELECT *”保持不变。
也许正是因为谷歌搜索“SELECT *”的困难,我才无法找到与此相关的任何内容(我确实将其放在双引号中)。
拜托,我在 Transact-SQL 方面经验丰富,所以请不要给我讲授为什么我不应该使用 SELECT *。我知道它的所有优点和缺点,而且我有时也会使用它。这是一种语言功能,就像所有语言功能一样,可以用于善意或邪恶(我强调不同意使用它是不合适的)。
编辑:我正在给马克答案,因为似乎无法关闭此行为。问题被视为已结束。我注意到企业管理器没有做类似的事情。 解决方法是将 SQL 编辑为文本,或使用 Managment Studio 以外的产品。或者在每次编辑 View 时不断编辑列列表并替换 *。叹息。
最佳答案
当 SQL Server Mgmt Studio 创建 View 时,我假设他们将 * 扩展到特定时间基础表中存在的完整列列表,正是出于以下原因:如果其中之一会怎样?基础表发生变化?您是否希望新列只是简单地显示在引用该表的每个 View 中?严重地???
我认为微软试图在这里植入“最不令人惊讶的元素” - 您的 View 将包含创建 View 时存在的那些列 - 并且它会保持这种状态,除非您明确且有意地更改它。
当基础表发生变化时,我不想让我的 View 突然比以前拥有更多的列......你呢?
抱歉,我认为 Mgmt Studio 中没有任何设置可以关闭此行为。
关于sql-server - 如何阻止 SQL Server Management Studio 将 'SELECT *' 替换为列列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2377033/