sql >> Base de Datos >  >> RDS >> Sqlserver

SQL Server:¿Necesito usar sentencias GO entre lotes?

No son estrictamente necesarios, son solo instrucciones para que SQL Server Management Studio ejecute las declaraciones hasta este punto ahora y luego continúe. GO es no una palabra clave T-SQL o cualquier cosa, es solo una instrucción que funciona en SSMS.

A veces, necesita un GO, p. si agrega una columna a una tabla y luego desea seleccionarla nuevamente, debe tener un GO entre agregar la columna y consultarla.

P.ej. si intenta ejecutar esto, obtendrá errores de SSMS:

ALTER TABLE (sometable) ADD DateTimeStamp DATETIME

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

Resultados en:

El punto es:SSMS está tratando de verificar la declaración completa a la vez, pero en la declaración SELECT, se quejará de la falta de DateTimeStamp columna.

ALTER TABLE (sometable) ADD DateTimeStamp DATETIME
GO       

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

Si pones un GO entre las dos declaraciones, funcionará, porque SSMS no analizará ni verificará la declaración completa antes de tiempo; hará la primera parte y luego solo analizará la segunda (después de GO ).

Pero aparte de situaciones como esta, casi nunca se requiere GO.