什么是DB2中的SQL Server事务?

时间:2009-04-30 21:16:48

标签: sql-server db2

与DB2中的以下SQL Server语句等效的是什么?

  • 开始交易
  • 提交交易
  • 回滚交易

3 个答案:

答案 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)

enter image description here如果您使用像Intellij Idea(或其他产品)之类的IDE,那么您就不可能明确开始交易。换句话说,您无法在IDE的控制台中键入“开始交易”。

但是您可以禁用“自动提交”(并在以后重新启用),然后在控制台中键入“提交”或“回滚”。

在IDEA中,还有一个“提交”按钮和一个“回滚”按钮。 看看附带的屏幕转储。