Те не са строго задължителни - те са просто инструкции за 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
Резултати в:
Въпросът е:SSMS се опитва да провери целия оператор наведнъж, но в оператора SELECT ще се оплаче от липсващия DateTimeStamp
колона.
ALTER TABLE (sometable) ADD DateTimeStamp DATETIME
GO
SELECT ID, DateTimeStamp FROM (sometable) WHERE ID > 5
Ако поставите GO
между двата израза, ще работи, тъй като SSMS няма да анализира и проверява целия оператор предварително - той ще направи първата част и след това ще анализира само втората (след GO
).
Но освен ситуации като тази, GO почти никога не е необходим.