SQL Server Management Studio insère toujours une commande GO lorsque je crée une requête à l'aide du menu contextuel "Script en tant que". Pourquoi? Que fait réellement GO?
SQL Server Management Studio insère toujours une commande GO lorsque je crée une requête à l'aide du menu contextuel "Script en tant que". Pourquoi? Que fait réellement GO?
Réponses:
C'est un terminateur de lot, vous pouvez cependant le changer comme vous le souhaitez
La commande GO n'est pas une instruction Transact-SQL, mais une commande spéciale reconnue par plusieurs utilitaires MS, y compris l'éditeur de code SQL Server Management Studio.
La commande GO est utilisée pour regrouper les commandes SQL en lots qui sont envoyés ensemble au serveur. Les commandes incluses dans le lot, c'est-à-dire l'ensemble de commandes depuis la dernière commande GO ou le début de la session, doivent être logiquement cohérentes. Par exemple, vous ne pouvez pas définir une variable dans un lot, puis l'utiliser dans un autre car la portée de la variable est limitée au lot dans lequel elle est définie.
Pour plus d'informations, voir http://msdn.microsoft.com/en-us/library/ms188037.aspx .
GO
réellement utile?
GO n'est pas un mot clé SQL.
C'est un séparateur de lots utilisé par les outils clients (comme SSMS) pour diviser le script entier en lots
Répondu plusieurs fois ... exemple 1
Juste pour ajouter aux réponses existantes, lorsque vous créez des vues, vous devez séparer ces commandes en lots en utilisant go
, sinon vous obtiendrez l'erreur 'CREATE VIEW' must be the only statement in the batch
. Ainsi, par exemple, vous ne pourrez pas exécuter le script sql suivant sansgo
create view MyView1 as
select Id,Name from table1
go
create view MyView2 as
select Id,Name from table1
go
select * from MyView1
select * from MyView2
Go signifie que, quelles que soient les instructions SQL écrites avant et après tout GO précédent, elles iront au serveur SQL pour traitement.
Select * from employees;
GO -- GO 1
update employees set empID=21 where empCode=123;
GO -- GO 2
Dans l'exemple ci-dessus, les instructions avant GO 1 iront au serveur SQL dans un lot, puis toutes les autres instructions avant GO 2 iront au serveur SQL dans un autre lot. Donc, comme nous le voyons, il a séparé les lots.
Voici la magie de GO.
SELECT 'Go'
Go 10
SYNTAXE: Go INT(BatchNumber)
Numéro de lot: aucune
Cela semble simple, cela pourrait vous conduire à Spaghetti si vous codez plus profondément.