sql-server - 如何阻止 SQL Server Management Studio 将 'SELECT *' 替换为列列表?

标签 sql-server ssms

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/

相关文章:

sql-server - sql server Management Studio 代码完成

sql-server - SSIS - RPC 服务器不可用

sql-server-2008 - 折叠/展开代码块

sql - 使用 CTE 从下线记录中获取总计数和总金额之和

python - 我可以在与 pyodbc 和 MS SQL Server 的一个连接上使用多个游标吗?

sql-server - 用Transact-SQL替换所有记录中的多个XML属性值?

c# - 连接到 SQL Server 数据库 C#-WinForms

sql - SQL:如何将数据插入具有列名称的表中

sql - 将.bak文件还原到远程数据库