Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

SQL Server:Preciso usar instruções GO entre lotes?


Eles não são estritamente necessários - são apenas instruções para o SQL Server Management Studio executar as instruções até este ponto agora e continuar. GO é não uma palavra-chave T-SQL ou qualquer coisa - é apenas uma instrução que funciona no SSMS.

Às vezes, você precisa de um GO - por exemplo, se você adicionar uma coluna a uma tabela e depois quiser selecioná-la novamente, você precisa ter um GO entre a adição da coluna e a consulta dela.

Por exemplo. se você tentar executar isso, receberá erros do SSMS:
ALTER TABLE (sometable) ADD DateTimeStamp DATETIME

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

Resulta em:

O ponto é:o SSMS está tentando verificar a instrução inteira de uma só vez, mas na instrução SELECT, ele reclamará da falta de DateTimeStamp coluna.
ALTER TABLE (sometable) ADD DateTimeStamp DATETIME
GO       

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

Se você colocar um GO entre as duas instruções, funcionará, porque o SSMS não analisará e verificará a instrução inteira com antecedência - fará a primeira parte e analisará apenas a segunda (depois do GO ).

Mas além de situações como esta, o GO quase nunca é necessário.