我见过人们在 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
结果:
Msg 207, Level 16, State 1, Line 9 Invalid column name 'datetimestamp'.
要点是:SSMS 尝试立即验证整个语句,但在 SELECT 语句上,它会提示缺少 DateTimeStamp
列。
ALTER TABLE (sometable) ADD DateTimeStamp DATETIME
GO
SELECT ID, DateTimeStamp FROM (sometable) WHERE ID > 5
如果您在两个语句之间放置一个 GO
,它就会起作用,因为 SSMS 不会提前解析和验证整个语句 - 它只会执行第一部分,然后只执行解析第二个(在 GO
之后)。
但除了这种情况之外,几乎不需要 GO。
关于SQL Server : Do I need to use GO statements between batches?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3844962/