这是 SQL Server 的 ROLLBACK 文档中的错误吗?

Jus*_*ner 13 sql-server documentation transaction rollback

是SQL Server 的文档中讲的ROLLBACK语句。在该页面上,它声明其语法如下:

ROLLBACK { TRAN | TRANSACTION }   
     [ transaction_name | @tran_name_variable  
     | savepoint_name | @savepoint_variable ]   
[ ; ]  
Run Code Online (Sandbox Code Playgroud)

显然方括号内的内容是可选的,似乎您应该从TRAN或 中选择一个TRASACTION。但实际上,您可以完全省略两者,并且ROLLBACK是一个完全有效的语句。这是错误还是故意的?

Dan*_*man 31

ROLLBACK TRANSACTION文档是正确的,尽管没有额外的背景尚不清楚。

ROLLBACK是类似ROLLBACK WORK语句的简写,而不是ROLLBACK TRANSACTION. 以下是ROLLBACK WORK文档页面的摘录:

回滚 [ 工作 ] [ ; ]

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

嵌套事务时,ROLLBACK WORK 总是回滚到最外层的 BEGIN TRANSACTION 语句,并将 @@TRANCOUNT 系统函数递减为 0。

注意同样适用于相似COMMIT TRANSACTIONCOMMIT WORK语句。