Они не являются строго обязательными - это всего лишь инструкции для 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
Результаты:
Сообщение 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 вряд ли когда-либо понадобится.