Tsql T-SQL中的查询、GO语句和事务

Tsql T-SQL中的查询、GO语句和事务,tsql,Tsql,SQL如何解释这种结构的查询- [create some table and insert some data] GO [create another table and insert some data] GO 我的理解是,它按顺序执行语句,但它是否也会一个接一个地提交更改(即,一旦到达第一批的末尾,它就会插入到它在批开始时创建的表中),还是等待整个查询成功执行?GO语句用于分离命令批。如果您没有专门启动事务,SQL将为您执行 在您描述的情况下,自动提交事务将围绕每个“创建一些表”命令和“插

SQL如何解释这种结构的查询-

[create some table and insert some data]
GO
[create another table and insert some data]
GO

我的理解是,它按顺序执行语句,但它是否也会一个接一个地提交更改(即,一旦到达第一批的末尾,它就会插入到它在批开始时创建的表中),还是等待整个查询成功执行?

GO语句用于分离命令批。如果您没有专门启动事务,SQL将为您执行

在您描述的情况下,自动提交事务将围绕每个“创建一些表”命令和“插入一些数据”命令进行包装


每个语句都是按顺序执行的。您将得到两个单独的批处理,每个批处理包含两个命令,并用它们自己的自动提交事务包装。共4个事务。

GO
是多个MS工具使用的语句,它是而不是SQL

这些工具使用它来表示一批语句的结束

发信人:(谢谢@datagod)

GO不是Transact-SQL语句;它是sqlcmd和osql实用程序以及SQLServerManagementStudio代码编辑器识别的命令


@Alexander=它也不是t-sql。它是一个SSMS、SQLCMD和其他工具能够理解的关键字,而不是SQL SERVER本身。这是一个与手头的问题无关的毫无意义的因素。是的,在您提供之前,我已经阅读了MSDN关于这一点的内容。嗯,那么,如果我已经看到创建了第二个表(实际上,这些是SELECT INTO语句),但是第一个表中没有数据,我应该担心吗?实际上没有理由发生这种情况,自从查询成功运行以来,我对它所做的唯一更改是添加一个左连接,并且没有对基础数据执行任何更改。因此,这似乎表明,至少它不会按顺序提交这些事务…+1,但可能更清楚的是,避免使用“隐式”一词,因为
SET implicit_transactions ON
的含义有所不同。这是一个自动提交的事务。谢谢Martin。我固定了我的岗位。