一尘不染

SQL Server:是否需要在批次之间使用GO语句?

sql

我见过人们在成批的SQL代码之间使用GO语句,但是AFAICS并不是强制性的(SQL Server2008)。在SQL语句的批/集之间使用GO语句有什么好处?


阅读 199

收藏
2021-03-17

共1个答案

一尘不染

并非严格要求它们-它们只是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在两个语句之间放置a,那么它将起作用,因为SSMS不会提前解析和验证整个语句-它会处理第一部分,然后仅解析第二部分(在之后GO)。

但是除了这种情况之外,几乎不需要GO。

2021-03-17