首页 > 解决方案 > SQL中“GO”语句的真正作用?

问题描述

我听说该GO语句将 SQL 中的命令批次分开。并且CREATE事务应该是批次上的唯一查询。

但是当我尝试时:

Create database dbTest
Create table tbSomething(ID int primary key,Name varchar(30))
GO

输出仍然是成功的。

那么GOStatement 是如何影响 SQL 批处理的呢?

标签: sqlsql-server

解决方案


GO用于将一个脚本分成多个批次。

这个词GO不是一个sql语句。SQL 批处理器(例如 SSMS)可以理解它,而不是 SQL Server。

简而言之,如果单独GO出现在一行上,SSMS 会将每个分隔的部分GO作为单独的批次发送。SQL Server 永远不会看到这些GO行,只有它们之间的 SQL。

由于 SQL Server 有一条语法规则,即必须在批处理中单独定义存储过程,因此您经常会找到GO用于分隔批处理的数据库创建脚本,以便可以从一个脚本创建多个存储过程。然而,理解GO和划分批次的是客户端软件,而不是 SQL 服务器。


推荐阅读