Я видел, как люди используют инструкцию GO между партиями кода SQL, но AFAICS не является обязательным (SQL Server 2008). Каковы преимущества использования операторов GO между партиями/наборами операторов SQL?
SQL Server: Нужно ли использовать команды GO между партиями?
Ответ 1
Они не являются строго обязательными - это всего лишь инструкции для SQL Server Management Studio для выполнения заявлений до этого момента, а затем продолжать работу. GO
не ключевое слово T-SQL или что-то еще - это просто инструкция, которая работает в SSMS.
Иногда вам нужен GO - например. если вы добавите столбец в таблицу, а затем хотите его снова выбрать, вам нужно иметь GO между добавлением столбца и его запросом.
например. если вы попытаетесь выполнить это, вы получите ошибки из SSMS:
ALTER TABLE (sometable) ADD DateTimeStamp DATETIME
SELECT ID, DateTimeStamp FROM (sometable) WHERE ID > 5
Результаты в:
Msg 207, уровень 16, состояние 1, строка 9 Недопустимое имя столбца 'datetimestamp'.
Дело в том, что SSMS пытается проверить весь оператор сразу, но в инструкции SELECT он будет жаловаться на отсутствующий столбец DateTimeStamp
.
ALTER TABLE (sometable) ADD DateTimeStamp DATETIME
GO
SELECT ID, DateTimeStamp FROM (sometable) WHERE ID > 5
Если вы помещаете GO
между двумя операторами, это сработает, потому что SSMS не будет анализировать и проверять всю инструкцию раньше времени - она будет делать первую часть, а затем анализировать только вторую (после GO
).
Но кроме ситуаций, подобных этому, GO вряд ли когда-либо понадобится.
Ответ 2
В SQL-инструментах обязательно указывать SSMS, где начинается и заканчивается пакет. Это также требовалось для некоторых операторов, таких как CREATE TRIGGER, который должен быть первым в пакете
Например, в вызове С# на SQL Server это значение не имеет значения