De är inte strikt nödvändiga - de är bara instruktioner för SQL Server Management Studio att exekvera satserna fram till denna punkt nu och sedan fortsätta. GO
är inte ett T-SQL-sökord eller något annat - det är bara en instruktion som fungerar i SSMS.
Ibland behöver du en GO - t.ex. om du lägger till en kolumn i en tabell och sedan vill välja den igen, måste du ha en GO mellan att lägga till kolumnen och frågan om den.
T.ex. om du försöker köra detta får du felmeddelanden från SSMS:
ALTER TABLE (sometable) ADD DateTimeStamp DATETIME
SELECT ID, DateTimeStamp FROM (sometable) WHERE ID > 5
Resultat i:
Poängen är:SSMS försöker verifiera hela uttalandet på en gång, men på SELECT-satsen kommer det att klaga på den saknade DateTimeStamp
kolumn.
ALTER TABLE (sometable) ADD DateTimeStamp DATETIME
GO
SELECT ID, DateTimeStamp FROM (sometable) WHERE ID > 5
Om du sätter en GO
mellan de två satserna kommer det att fungera, eftersom SSMS inte kommer att tolka och verifiera hela satsen i förväg - det kommer att göra den första delen och sedan bara tolka den andra (efter GO
).
Men förutom situationer som denna, krävs GO nästan aldrig.