【发布时间】:2012-02-13 13:11:21
【问题描述】:
根据 msdn :提交语法是:
但是,当我省略 tran/transaction 单词时 - 它确实可以编译并运行,没有错误。
它是如何工作的?
它会做其他事情吗?
【问题讨论】:
标签: sql-server-2005 transactions
根据 msdn :提交语法是:
但是,当我省略 tran/transaction 单词时 - 它确实可以编译并运行,没有错误。
它是如何工作的?
它会做其他事情吗?
【问题讨论】:
标签: sql-server-2005 transactions
所讨论的 COMMIT 实际上并不是您认为的 COMMIT。见COMMIT WORK
提交[工作] [; ]
备注
此语句的功能与 COMMIT TRANSACTION 相同,但 COMMIT TRANSACTION 接受用户定义的事务名称。这种 COMMIT 语法,无论是否指定可选关键字 WORK,都与 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
【讨论】:
except COMMIT TRANSACTION accepts a user-defined transaction name.... 但我没有给他交易的名称...这就是问题所在。 + 我不是在谈论 WORK 关键字。我在谈论提交与提交反式。
COMMIT TRANSACTION SomeName 或COMMIT TRAN SomeName。 不自行提交
IF @@TRANCOUNT > 0 旨在检查有(至少)一个待处理事务 - if 必须与 ROLLBACK 和 COMMIT 一起使用,因为在没有任何事务打开的情况下执行这些指令会产生错误
【讨论】: