2010-10-02 34 views

回答

21

它們並不是嚴格要求的 - 它們只是SQL Server Management Studio執行語句的指示,現在執行到現在爲止,然後繼續執行。 GO不是一個T-SQL關鍵字或任何東西 - 它只是一個在SSMS中工作的指令。

有時,你需要一個GO - 例如,如果向列添加列,然後又想再次選擇列,則需要在添加列和查詢列之間有一個GO。

E.g.如果您嘗試執行此,你會從SSMS得到錯誤:

ALTER TABLE (sometable) ADD DateTimeStamp DATETIME 

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

結果:

消息207,級別16,狀態1,行9 無效的列名稱datetimestamp「。

問題是:SSMS試圖一次性驗證整個語句,但是在SELECT語句中,它會抱怨失蹤的DateTimeStamp列。

ALTER TABLE (sometable) ADD DateTimeStamp DATETIME 
GO  

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

如果你把兩個語句之間GO,它會工作,因爲SSMS不會分析和提前驗證整個語句 - 它會做的第一部分,然後只解析第二(在GO之後)。

但除了像這樣的情況之外,幾乎不需要GO。

0

只有在SQL工具中才能告訴SSMS批處理的起始和結束位置在哪裏。它也需要一些語句,如CREATE TRIGGER必須在批處理中第一個

例如,在一個c#到SQL Server的調用中它沒有任何意義