sql-server - DB2 中的 SQL Server 事务相当于什么?

标签 sql-server db2

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

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

最佳答案

答案实际上比这里指出的要复杂一些。确实,事务是 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;

从表面上看,这些类似于显式交易,但事实并非如此。相反,它们实际上只是单个隐式事务中的时间点。对于许多目的来说,它们可能就足够了,但了解概念差异很重要。

关于sql-server - DB2 中的 SQL Server 事务相当于什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/809136/

相关文章:

SQL Server 包含

sql-server - 带有 SQL Server 2017 数据源的 Jetty

sql - 根据日期范围计算天数

security - 使用 DB2 连接自动执行 spark 提交作业

java - JDBC 4 是否完全兼容 JDBC 3?

mysql - 根据总计检索组的详细行

sql-server - 如何将计算列的数据类型强制为不允许空值的位字段?

hibernate - HQL检索最近365天的记录

java - openjpa,更新,错误 'PK has non-default value'

docker - 带有Docker的db2:如何解决bash脚本中的错误?