Как остановить SQL Server Management Studio, заменив «SELECT *» списком столбцов? - PullRequest
5 голосов
/ 04 марта 2010

SQL Server Mgmt Studio сводит меня с ума.

Если я создаю представление и ВЫБИРАЮ «*» из таблицы, все в порядке, и я могу сохранить представление. Если посмотреть на SQL для представления (например, с помощью сценария CREATE), обнаружится, что «SELECT *» действительно сохраняется в SQL представления.

Но как только я снова открываю представление с помощью графического интерфейса (щелкните правой кнопкой мыши> изменить), SELECT * заменяется списком столбцов всех столбцов в таблице.

Как я могу остановить Management Studio от этого? Я хочу, чтобы мой «SELECT *» оставался именно таким.

Возможно, именно из-за трудности с поиском "SELECT *" я не смог найти что-либо отдаленно относящееся к этому (я поставил это в двойные кавычки).

Пожалуйста, у меня большой опыт работы с Transact-SQL, поэтому, пожалуйста, НЕ читайте мне лекцию о том, почему я не должен использовать SELECT *. Я знаю все плюсы и минусы, и я иногда использую это. Это языковая функция, и, как и все языковые функции, она может быть использована для добра или зла (я категорически не согласна с тем, что ее использование никогда не подходит).

Редактировать: я даю Марку ответ, поскольку кажется, что невозможно отключить это поведение. Проблема считается закрытой. Отмечу, что Enterprise Manager не делал ничего подобного. Обходной путь - отредактировать SQL как текст или перейти к продукту, отличному от Managment Studio. Или постоянно редактируйте список столбцов и заменяйте * каждый раз, когда вы редактируете представление. Вздох.

Ответы [ 3 ]

3 голосов
/ 04 марта 2010

Не используйте редактор графического интерфейса.

Вместо этого используйте редактор T-SQL. Вы получите это, выбрав «Script View As» -> «ALTER to» -> «New Query Window» в контекстном меню.

3 голосов
/ 04 марта 2010

Когда SQL Server Mgmt Studio создает представление, я предполагаю, что они расширяют * до полного списка столбцов, которые присутствуют в базовых таблицах в это конкретное время именно по этой причине: что если один из основные таблицы изменений? Вы хотите, чтобы новые столбцы просто отображались в каждом представлении, которое ссылается на эту таблицу? Шутки в сторону???

Я думаю, что Microsoft пытается раскрыть здесь «элемент наименьшего удивления» - ваше представление будет содержать те столбцы, которые присутствуют во время создания представления - и оно останется таким, если вы явно и сознательно не измените это. 1003 *

Я, например, не хотел бы, чтобы у моих представлений внезапно появилось больше столбцов, чем раньше, когда базовая таблица изменяется ..... не так ли?

И я не думаю, что в Mgmt Studio есть настройка для отключения этого поведения, извините.

0 голосов
/ 04 марта 2010

Попробуйте любой из них: они являются альтернативой использованию графического интерфейса и могут быть настроены как фрагменты с сочетаниями клавиш:

select view_definition 
from information_schema.views
where table_name = 'viewname'

или

exec sp_helptext 'viewname'

Результаты сохранят "выбрать *". (Проверено)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...