Должен ли я написать слово «GO» для выполнения оператора SQL-сервера? - PullRequest
4 голосов
/ 27 марта 2011

У меня практически нет опыта работы с TSQL и SQL Server - поэтому в MySQL, когда я хочу выполнить инструкцию, я просто пишу:

Select * from users

... и затем нажмите ENTER.

Однако теперь я вижу много учебных пособий по SQL Server, в которых у вас есть слово GO сразу после каждого оператора. Должен ли я написать это? Например:

Select * from users; GO

Или я могу просто написать:

Select * from users; <enter key pressed...>

Ответы [ 5 ]

7 голосов
/ 27 марта 2011

В SQL Server go разделяет пакеты запросов.В большинстве случаев это необязательно.

В более ранних версиях SQL Server вам приходилось делать go после изменения таблицы, например:

alter table MyTable add MyColumn int
go
select MyColumn from MyTable

Если вы этого не сделали, SQLСервер будет анализировать пакет запроса и жаловаться, что MyColumn не существует.См. MSDN :

Утилиты SQL Server интерпретируют GO как сигнал о том, что они должны отправить текущий пакет инструкций Transact-SQL экземпляру SQL Server.Текущий пакет операторов состоит из всех операторов, введенных с момента последнего GO или с начала специального сеанса или сценария, если это первый GO.

2 голосов
/ 27 марта 2011

GO разделяет пакеты, как писал Andomar.

Некоторые операторы SQL (например, CREATE SCHEMA ) должны быть первыми или единственными операторами в пакете.Например, MSDN состояния

Оператор CREATE PROCEDURE нельзя объединить с другими операторами Transact-SQL в одном пакете.

Локальные переменныетакже ограничен партией и поэтому недоступен после GO.

1 голос
/ 27 марта 2011

Go не является обязательным, нет необходимости записывать это в ваших SQL-выражениях.

0 голосов
/ 27 марта 2011

Как говорили другие ответчики до меня, вам на самом деле НЕ НУЖНО Go.

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

Например:

create view MyView as select * from MyTable   
go   
select * from MyView

Без Go Sql Server не будет выполнять это, потому что оператор выбора недопустим, потому что представление в этот момент не существует.

0 голосов
/ 27 марта 2011

Вам не нужно. GO будет выполнять каждую инструкцию (по крайней мере, на Sql Server)

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