Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
以下SQL事务的输出是什么?_Sql_Sql Server_Transactions - Fatal编程技术网

以下SQL事务的输出是什么?

以下SQL事务的输出是什么?,sql,sql-server,transactions,Sql,Sql Server,Transactions,确定以下代码的输出 PRINT 'Before Transaction' SELECT @@TRANCOUNT BEGIN TRAN T1 PRINT 'After transaction T1 starts' /* Value of @@TranCount is 1 */ SELECT @@TRANCOUNT BEGIN TRAN T2 save TRAN T2 --save tran T2 PRINT 'After transaction T2 starts' /* Value of @@T

确定以下代码的输出

PRINT 'Before Transaction'
SELECT @@TRANCOUNT
BEGIN TRAN T1
PRINT 'After transaction T1 starts'
/* Value of @@TranCount is 1 */
SELECT @@TRANCOUNT
BEGIN TRAN T2 save TRAN T2
--save tran T2
PRINT 'After transaction T2 starts'
/* Value of @@TranCount is 2 */
SELECT @@TRANCOUNT
ROLLBACK TRAN T2
PRINT 'After transaction T2 roll backs'
/* Value of @@TranCount is still 2 as the rollback failed due to a error */
SELECT @@TRANCOUNT ---------[IT SHOUD BE 1,BUT WHY RESULT IS COMING AS 2?]
ROLLBACK TRAN T1
PRINT 'After transaction T1 roll backs'
/* Value of @@TranCount is 0 */
SELECT @@TRANCOUNT
输出不正确的原因是什么

来自

回滚事务将@@TRANCOUNT递减为0,除了 回滚事务保存点\ u名称,不影响 @@TRANCOUNT

您有事务T2保存,因此
ROLLBACK
@@tracount
没有影响


如果在事务T1上使用
回滚
@@tracount
将重置为

答案在于您的代码,因为您使用了保存事务T2,事务T2将被保存,回滚不会影响@@tracount

尝试在SQL Server中多次运行下面的查询…每次执行此查询时,您都会看到@TRANCOUNT的值增加1

SELECT @@TRANCOUNT
BEGIN TRAN T2 save TRAN T2
PRINT 'After transaction T2 starts'
SELECT @@TRANCOUNT
ROLLBACK TRAN T2
PRINT 'After transaction T2 roll backs'
SELECT @@TRANCOUNT