使用右键单击"脚本为"菜单创建查询时,SQL Server Management Studio始终插入GO命令.为什么?GO实际上做了什么?
我知道在SQL Server中GO 被认为是批处理分隔符.
我的问题是:有一个批处理分隔符有什么意义?它给你带来了什么好处,为什么要使用它?
示例:我经常看到它在SQL代码中使用如下,我不明白为什么它被认为是最佳实践.据我所知,代码在没有所有GO语句的情况下都是一样的:
USE AdventureWorks2012;
GO
BEGIN TRANSACTION;
GO
IF @@TRANCOUNT = 0
BEGIN
SELECT FirstName, MiddleName
FROM Person.Person WHERE LastName = 'Adams';
ROLLBACK TRANSACTION;
PRINT N'Rolling back the transaction two times would cause an error.';
END;
ROLLBACK TRANSACTION;
PRINT N'Rolled back the transaction.';
GO
Run Code Online (Sandbox Code Playgroud)
(来源:technet文档):
我是TSQL的新手,想知道这个GO陈述的真正含义.对我来说,它似乎只是在那里似乎适合.
我想它以某种方式告诉sql server运行前一个语句?如果您根本不使用它们会发生什么?有人可以给出一个例子,如果我不使用a,语句将会中断GO.
请详细说明.
当我使用SqlCommand.ExecuteNonQuery()它并且它CommandText有GO(提交)它时,我得到一个SQLException.
我删除它,SQL工作,但整个SQL有很多语句,我想在每个语句运行后提交.而且我不想将它们分成多个SqlCommand对象.
有没有更好的解决方案来保持提交和保持一个独特的SqlCommand对象?