我已經看到人們在批量的SQL代碼之間使用GO語句,但是AFAICS並不是強制性的(SQL Server 2008)。在批次/組SQL語句之間使用GO語句有什麼好處?SQL Server:我需要在批次之間使用GO語句嗎?
13
A
回答
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的調用中它沒有任何意義
相關問題
- 1. 我需要兩次使用sqlite3 finalize語句嗎?
- 2. T-SQL GO語句n次
- 3. 我需要幫助在where子句中使用SQL case語句
- 4. 歐洲語言需要SQL Server - NVARCHAR嗎?
- 5. 需要在SQL語句
- 6. 需要Wordpress SQL語句幫助嗎?
- 7. SQL Server 2008需要用SQL語句創建用戶表類型創建語句
- 8. SQL會在語句之間使用這個改進嗎?
- 9. SQL Server中的CASE語句以獲取我需要的輸出
- 10. 使用SQL Server MERGE語句
- 11. 需要的SQL語句
- 12. 需要SQL語句幫助
- 13. 需要SQL語句幫助
- 14. 需要SUM SQL語句
- 15. 記事本++插入爲新行的SQL語句之間的「GO」
- 16. 在使用sql developer之前,我需要安裝oracle db嗎?
- 17. 需要在sql語句的where子句中使用join?
- 18. 我需要再次使用std :: move嗎?
- 19. T-SQL GO UPDATE語句
- 20. 爲什麼我的SQL語句需要這麼長的時間
- 21. T-SQL之間的語句
- 22. 您可以使用SQL Server的方式在mySQL中使用批次的SQL嗎?
- 23. 我需要使用SQL語句計算得分百分比
- 24. 在Java Sql中執行批准的準備語句需要很長時間在最後一次迭代中
- 25. 我需要在Java中的SQL語句中使用where子句,並返回值
- 26. 在INSERT語句中使用ROWLOCK(SQL Server)
- 27. 嘗試使用CASE語句在SQL Server
- 28. 在SQL語句上需要幫助
- 29. 使用Solr,我還需要SQL db嗎?
- 30. 如何運營商之間有case語句在SQL Server 2005中