Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

SQL Server:Muss ich GO-Anweisungen zwischen Batches verwenden?

Sie sind nicht unbedingt erforderlich – sie sind nur Anweisungen für das SQL Server Management Studio, um die Anweisungen bis zu diesem Punkt jetzt auszuführen und dann weiterzumachen. GO ist nicht B. ein T-SQL-Schlüsselwort oder irgendetwas - es ist nur eine Anweisung, die in SSMS funktioniert.

Manchmal braucht man ein GO - z.B. Wenn Sie einer Tabelle eine Spalte hinzufügen und sie dann erneut auswählen möchten, müssen Sie ein GO zwischen dem Hinzufügen der Spalte und ihrer Abfrage haben.

Z.B. Wenn Sie versuchen, dies auszuführen, erhalten Sie Fehler von SSMS:

ALTER TABLE (sometable) ADD DateTimeStamp DATETIME

SELECT ID, DateTimeStamp FROM (sometable) WHERE ID > 5

Ergebnisse in:

Der Punkt ist:SSMS versucht, die gesamte Anweisung auf einmal zu überprüfen, aber bei der SELECT-Anweisung beschwert es sich über den fehlenden DateTimeStamp Spalte.

ALTER TABLE (sometable) ADD DateTimeStamp DATETIME
GO       

SELECT ID, DateTimeStamp FROM (sometable) WHERE ID > 5

Wenn Sie ein GO setzen zwischen den beiden Anweisungen funktioniert, da SSMS nicht die gesamte Anweisung im Voraus parst und verifiziert - es wird den ersten Teil ausführen und dann nur den zweiten parsen (nach dem GO ).

Aber abgesehen von Situationen wie dieser ist GO kaum jemals erforderlich.