Ответ 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 вряд ли когда-либо понадобится.