与DB2中的以下SQL Server语句等效的是什么?
答案 0 :(得分:17)
答案实际上比这里指出的要复杂一点。确实,事务是ANSI标准化的,DB2 可能支持它们。
DB2 for z / OS可能与其他变种(LUW,Linux-Unix-Windows,最常见)完全不同。有可能陷入咆哮,这使得谈论DB2的想法几乎毫无意义。您正在谈论IBM数据库的某些特定变体,但在一个中有效的东西在另一个中可能完全无效。我将假设OP使用的任何风格都不是z / OS,因为BEGIN TRANSACTION
答案被接受了。
对于那些偶然发现尝试与DB2 z / OS一起使用事务的人来说,这里有一个概述:大型机的DB2没有显式事务。没有BEGIN TRANSACTION
或任何其他类似的构造。事务是隐式开始的(通常称为文档中的工作单元)并且显式提交或回滚(通常 - 许多GUI工具,如Toad,具有可以偶尔偷偷摸摸的自动提交功能)。
从9.1 z / OS SQL参考手册(第28页; http://www-01.ibm.com/support/docview.wss?uid=swg27011656#manuals处提供):
“启动申请流程时启动工作单位。工作单位 当前一个工作单元以非其他方式结束时,也会启动 申请过程结束。一个工作单元由提交操作结束, 完全回滚操作,或应用程序进程结束。提交或回滚 操作仅影响在其结束的工作单元内进行的数据库更改。“
编写脚本时最接近的是手动指定保存点。
这些看起来像这样:
SAVEPOINT A ON ROLLBACK RETAIN CURSORS;
UPDATE MYTABLE SET MYCOL = 'VAL' WHERE 1;
ROLLBACK WORK TO SAVEPOINT A;
从表面上看,这些类似于显式交易,但它们不是。相反,它们实际上只是一个隐式事务中的时间点。出于许多目的,它们可能就足够了,但重要的是要意识到概念上的差异。
答案 1 :(得分:4)
有关示例,请参阅here。但基本上
BEGIN TRANSACTION
COMMIT TRANSACTION
ROLLBACK
答案 2 :(得分:1)