解决方法
它们并不是严格要求的 – 它们只是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几乎不需要.