[英]SQL Server: Do I need to use GO statements between batches?
我見過人們在批量的SQL代碼之間使用GO語句,但是AFAICS並不是強制性的(SQL Server 2008)。 批處理/ SQL語句集之間使用GO語句有什么好處?
它們並不是嚴格要求的 - 它們只是SQL Server Management Studio的指令,用於執行到目前為止的語句,然后繼續運行。 GO
不是 T-SQL關鍵字或任何東西 - 它只是一個在SSMS中工作的指令。
有時,您需要GO - 例如,如果您向表中添加列,然后又想要再次選擇它,則需要在添加列和查詢之間進行GO操作。
例如,如果您嘗試執行此操作,您將從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幾乎不需要。
只有SQL工具才能告訴SSMS批處理開始和結束的位置。 某些語句也需要它,例如CREATE TRIGGER,它必須是批處理中的第一個
例如,在ac#到SQL Server調用它沒有任何意義
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.