我见过人们在成批的SQL代码之间使用GO语句,但是AFAICS并不是强制性的(SQL Server2008)。在SQL语句的批/集之间使用GO语句有什么好处?
并非严格要求它们-它们只是SQL Server Management Studio到现在为止执行语句然后继续执行的指令。GO是 不是 一个T- SQL关键字或任何东西-它只是一个在SSMS工作指令。
GO
有时,您需要一个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列。
DateTimeStamp
ALTER TABLE (sometable) ADD DateTimeStamp DATETIME GO SELECT ID, DateTimeStamp FROM (sometable) WHERE ID > 5
如果GO在两个语句之间放置a,那么它将起作用,因为SSMS不会提前解析和验证整个语句-它会处理第一部分,然后仅解析第二部分(在之后GO)。
但是除了这种情况之外,几乎不需要GO。