Как редактировать данные в таблице результатов в SQL Server Management Studio

95

Я хочу отредактировать значения некоторых строк, как только получу результат запроса в таблице результатов. Это правда, что мы можем щелкнуть правой кнопкой мыши по таблице и сказать «открыть таблицу», чтобы получить доступ к редактируемой таблице, но мне нужен редактируемый вывод запроса, только определенные строки, соответствующие моим критериям, и редактировать их в таблице результатов.

Возможно ли это внутри Microsoft SQL Server Management Studio Express?

bi2mon
источник
1
Отметить как дубликат с помощью stackoverflow.com/questions/1535469/… ? У него также есть полностью рабочее решение
Брэд
3
@Brad - ответ на вопрос, связанный с, работает только в том случае, если вы используете одну таблицу, т.е. без объединений. Как только вы начнете присоединяться к 2 или 3 столам, вы больше не сможете этого делать. Было бы интересно, если бы были другие решения.
Фрэнсис Роджерс,
2
Прочтите ответ @Yves A Martin ниже, чтобы узнать об альтернативе редактирования таблиц, которые ПРИСОЕДИНЯЮТСЯ.
jaredbaszler

Ответы:

86

Вы можете делать что-то похожее на то, что хотите. Щелкните правой кнопкой мыши таблицу и выберите «редактировать 200 верхних строк» ​​(если вы используете SQL Server 2008) или «открыть таблицу» в SQL Server 2005. Как только вы попадете туда, вверху есть кнопка с надписью «SQL»; когда вы щелкаете по ней, вы можете написать оператор SQL, и вы можете редактировать его результаты, если щелкнете ячейку, которую хотите изменить.

Ламак
источник
1
Это 2019 год, его последняя версия - SSMS 2017, но для редактирования ячеек сетки следует использовать тот же подход! такой плохой дизайн интерфейса!
S.Serpooshan
77

Да, это возможно. Щелкните правой кнопкой мыши по таблице и нажмите, Edit Top 200 Rowsкак показано на изображении ниже.

введите описание изображения здесь

Затем щелкните в любом месте сетки результатов, чтобы включить SQLзначок «Показать панель Sql». Это откроет редактор sql для таблицы, которую вы решили редактировать, здесь вы можете написать свой собственный sql-запрос, а затем вы можете напрямую редактировать набор результатов запроса.

введите описание изображения здесь

Обучение
источник
25

Это можно сделать следующим образом:

  • превращение выбранного запроса в представление
  • щелкните правой кнопкой мыши на представлении и выберите Edit All Rows (вы получите сетку значений, которые вы можете редактировать, даже если значения взяты из разных таблиц).

Вы также можете добавить триггеры Insert / Update в свое представление, которые позволят вам получать значения из полей просмотра, а затем использовать T-SQL для управления обновлениями нескольких таблиц.

Ив Мартин
источник
1
+1 - это лучший и самый простой способ редактировать СОЕДИНЕННЫЕ таблицы. Хотя это слишком большая работа для выполнения этой задачи, это единственный способ, которым я могу это сделать.
jaredbaszler
Вы не можете редактировать JOINED таблицы. Только операторы SQL, не относящиеся к JOIN. Все мои ячейки не редактируются, когда у меня есть JOIN.
Чарльз Робертсон
20

SSMS - Результаты редактирования правой кнопкой мыши 200 | Вариант | Панель | SQL - отредактируйте инструкцию.

Ta01
источник
SSMS 2014, пропустите шаг «Вариант».
Дениз Скидмор
17

Нет. Вы не можете редактировать таблицу результатов. Сетка результатов в основном предназначена для отображения целей выполненного вами запроса.

Это по той причине, что любой может выполнять сложные запросы. Надеюсь, что в следующем выпуске они будут включать такую ​​функциональность.

Надеюсь, что отвечу на ваш вопрос.

мистер б
источник
6
Я не понимаю, почему люди отклонили ваш ответ. Это действительно правильно. После того, как вы используете соединение в своем запросе, вы не сможете редактировать результаты, используя методы, предложенные на данный момент ни в одном из ответов. +1 от меня.
Фрэнсис Роджерс,
Вы можете скопировать запрос в панель SQL для редактирования сетки, на которую ссылаются другие ответы.
Дениз Скидмор
17

Данные ответы остаются в силе. Никаких изменений в SSMS (SQL Server 2016) в этом отношении не было.

Вы также можете использовать панель критериев после выполнения «Редактировать первые 200 строк».

Контекстное меню Edit Top 200

  1. Показать панель критериев
  2. Введите критерий
  3. Редактируйте данные прямо в таблице результатов

Открыть панель критериев

Кроме того, количество строк для этих команд можно настроить в параметрах SSMS.

введите описание изображения здесь

Рикардо С
источник
10

ОБНОВЛЕНИЕ,
поскольку вы можете видеть правильное решение в Обучающем ответе. В SQL Server Management 2014 вы можете
1. нажать « Изменить первые 200 строк »,
а затем
2. нажать « Показать панель SQL (ctrl + 3) »
и
3. удалить TOP ( 200) из выбранного запроса


Обратитесь к ответу Шена Ланса, нет возможности редактировать Результат выбранного запроса. а другие ответы предназначены только для обычного выбора и только для 200 записей.

Хамид
источник
5

Да, вы можете редактировать объединенные результаты. (по крайней мере, в SSMS 2008 R2) После редактирования любого из значений результатов в представлении, в котором используются объединения, вам нужно будет снова выполнить запрос, чтобы обновить результаты.

Вам также необходимо убедиться, что SSMS настроен на разрешение «Редактировать все строки» ... для этого в SSMS - Инструменты | Опции | Обозреватель объектов SQL Server | Команды ... разверните параметры таблицы и просмотра ... введите значение 0 в "Значение для команды редактирования верхних n строк" ... можно сделать это и для выбора.

Ответ Yves A Martin на 100% правильный!

Роб

Роб Эйнскау
источник
5

Просто выберите «Изменить первые 200 строк», нажмите Ctrl + 3 в области сетки редактирования (или нажмите «Показать панель SQL») и отредактируйте запрос ...

Но учтите, что это будет работать только для запроса, не содержащего «соединение».

Том
источник
4

Сначала щелкните правой кнопкой мыши сказку, выберите «Редактировать все строки», выберите «Конструктор запросов -> Панель -> SQL», после чего вы можете редактировать вывод запроса в сетке.

Jack.one
источник
3

Если вам нужно часто выполнять редактирование в ячейках баз данных SQL, HeidiSQL отлично подойдет , не может быть проще в использовании и является бесплатным / открытым исходным кодом (принимаются пожертвования).

Первоначально написанный для MySQL, теперь он может обрабатывать SQL Server, а также имеет экспериментальную (по состоянию на август 2014 г.) поддержку PostgreSQL.

Шон О
источник
3

Щелкните правой кнопкой мыши любую таблицу в интересующем вас дБ или любую базу данных на сервере с использованием мастера, если есть соединения или с использованием нескольких дБ. Выберите «изменить верхние 200 строк». Выберите кнопку «SQL» на панели задач. Скопируйте и вставьте свой код поверх существующего кода и запустите снова. Теперь вы можете редактировать набор результатов вашего запроса. Шерри ;-)

Образцы Шерри Р.
источник
Это помогло лит.
Асад Али
2

Если запрос написан как представление, вы можете редактировать представление и обновлять значения. Обновление значений возможно не для всех представлений. Это возможно только для определенных просмотров. Дополнительные сведения см. В разделе « Изменение данных через ссылку MSDN View» . Вы можете создать представление для запроса и отредактировать 200 строк, как показано ниже:

введите описание изображения здесь

Венкатараман Р
источник
Почему здесь голосование против. Вопрос не касается редактирования таблицы. Вопрос в том, как мы можем редактировать сетку набора результатов для любого выходного запроса, который он получает. Я предложил, если возможно, он может создать представление для запроса и отредактировать строки.
Venkataraman R
0
  1. Для ясности: параметр «Значение для команды« Изменить верхние строки »не имеет ничего общего с тем, доступен ли набор результатов для редактирования или нет. Это просто способ ограничить набор результатов.

  2. Очевидно, что всегда возможно редактирование набора результатов запроса на основе одной и только одной таблицы.

  3. Набор результатов запроса, основанный на более чем одной таблице, находится при следующих возможных условиях: Вы можете редактировать поля в наборе результатов сразу, если они принадлежат одной и только одной таблице на основе запроса! Если поля являются первичным ключом, то вам необходимо выполнить обновление / «Выполнить SQL» (Ctrl + R) после каждого обновления строки, чтобы иметь возможность редактировать строку в следующий раз. Если поля не являются первичным ключом, то выполнять обновление / «Выполнить SQL» (Ctrl + R) не нужно.

Я тестировал его на SQL Server 2008-2016!

Asg
источник