根据msdn:提交语法是:
但是当我忽略 tran
/ transaction
字时 - 它会编译并运行时没有错误。
它如何运作?
它会改为做其他事吗?
答案 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
旨在检查(至少)一个待处理事务 - 如果必须与ROLLBACK
和COMMIT
一起使用,因为执行这些指令而不打开任何事务将产生错误