没有Tran的SQL Server COMMIT |交易?

时间:2012-02-13 13:11:22

标签: sql-server-2005 transactions

根据msdn:提交语法是:

enter image description here

但是当我忽略 tran / transaction字时 - 它会编译并运行时没有错误。enter image description here

它如何运作?

它会改为做其他事吗?

2 个答案:

答案 0 :(得分:7)

有问题的COMMIT实际上并不是你认为的COMMIT。见COMMIT WORK

  

COMMIT [WORK]   [; ]

     

说明

     

此语句与COMMIT TRANSACTION的功能相同,但COMMIT TRANSACTION接受用户定义的事务名称。无论是否指定可选关键字WORK,此COMMIT语法都与SQL-92兼容。

所以COMMIT本身就是COMMIT WORK,与COMMIT TRANSACTION相同 同上ROLLBACK [ WORK ]

评论后,

BEGIN TRANSACTION gbn
SELECT 1
COMMIT gbn -- fail
GO
BEGIN TRANSACTION gbn
SELECT 2
COMMIT TRAN gbn -- works
GO

答案 1 :(得分:0)

IF @@TRANCOUNT > 0旨在检查(至少)一个待处理事务 - 如果必须与ROLLBACKCOMMIT一起使用,因为执行这些指令而不打开任何事务将产生错误