事务回滚的问题:这段SQL语句的具体执行流程是怎么样的?

在以下示列中,BEGIN和END定义一系列一起执行的Transact-SQL语句。如果不包括BEGIN...END块,则将执行两个ROLLBACKTRANSACTION语... 在以下示列中,BEGIN 和 END 定义一系列一起执行的 Transact-SQL 语句。如果不包括 BEGIN...END 块,则将执行两个 ROLLBACK TRANSACTION 语句,并返回两条 PRINT 消息

USE AdventureWorks;
GO
BEGIN TRANSACTION;
GO
IF @@TRANCOUNT = 0
BEGIN
SELECT * from Person.Contact 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
/*
Rolled back the tranaction.
*/
这段SQL语句的具体执行流程是怎么样的?
展开
 我来答
jonsenkiar
2010-09-11 · TA获得超过201个赞
知道小有建树答主
回答量:200
采纳率:0%
帮助的人:131万
展开全部
你这个没有BEGIN ...END 时,第二个ROLLBACK TRANSACTION的存在会产生两个报错
Rolling back the transaction two times would cause an error.
ROLLBACK TRANSACTION 请求没有对应的 BEGIN TRANSACTION。
且第一个ROLLBACK TRANSACTION 与END之前的语句不会执行

你这个有BEGIN ...END 时,不会报错,且第一个ROLLBACK TRANSACTION 与END之前的语句不会执行

这应该是一段完整脚本的片段,你把完整脚本仔细看看吧
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式