DB2-MySql-PG 事务处理的不同
1. 结论
在事务期间出现数据操作异常(Exception)时,若不rollback,
且继续进行后续操作,最后commit的情况下:
DB2,异常SQL无效,正常SQL生效,类似于autocommit的执行效果。
MySQL,同DB2。但对异常SQL的处理机制不同,如超长时插入截断后数据等。
PostgreSQL,事务直接失败,相当于rollback了。
2. 对象
DB2 v9.5.0.2
PostgreSQL 9.0.4
MySQL 5.0.24-max
MySQL 5.5.24
3. 脚本
-- drop
DROP TABLE TEST_TA
GO
-- create
CREATE TABLE TEST_TA (
ID INT NOT NULL ,
NM CHAR(1) ,
PRIMARY KEY (ID) )
ENGINE = INNODB
GO
-- insert
INSERT INTO TEST_TA (ID,NM) VALUES(1,'1') -- I1
GO
INSERT INTO TEST_TA (ID,NM) VALUES(2,'12') -- I2
GO
INSERT INTO TEST_TA (ID,NM) VALUES(3,'1') -- I3
GO
INSERT INTO TEST_TA (ID,NM) VALUES(4,'1') -- I4
GO
-- select
SELECT * FROM TEST_TA
GO
-- delete
DELETE FROM TEST_TA
GO
4. 方法
使用JDBC 对各数据库执行 SQL:create. (AutoCommit=true)
开启事务,执行 SQL:insert,吞掉I2异常,继续执行I3,I4,commit。(AutoCommit=false)
察看结果,select,delete。(AutoCommit=true)
过程中,I2的字段超长后,得到一下信息。
MySQL:
Data truncation: Data truncated for column ‘NM’ at row 1
DB2:
SQLCODE: -433, SQLSTATE: 22001, SQLERRMC: 12
Message: Value “12″ is too long.
PostgreSQL:
value too long for type character(1)
current transaction is aborted, commands ignored until end of transaction block
执行select的结果,DB2:3,MySQL:4,PG:0
5. 用途
在需要有效数据统一提交,无效数据排除的情况下,需要细心的处理异常.
比如字段超长的这个无效数据混杂在有效数据之中,
对DB2,只需要最后commit就可以了.
对MySQL,则需要先一次排查出所有无效数据,再rollback,最后把有效数据进行commit.
而PG,则需要循环排查无效数据和rollback,最后把有效数据进行commit.
分享到:
相关推荐
我在学习大型机过程中的知识点整理,包括cobol-jcl-db2-mysql-cics
1- Save attached db2_regex.zip file to a new folder on the hard disk for example to C:\avalanche 2- Extract all files from the zip file to C:\avalanche\db2_regex 3- Open C:\avalanche\db2_regex\...
flink-sql-connector-db2-cdc 2.5-SNAPSHOT
标题中的"jdbc驱动(Oracle-sqlserver-db2-mysql-h2-sqlite)"指的是针对不同数据库系统的一系列JDBC驱动程序。以下是对这些数据库系统及其对应的JDBC驱动的详细解释: 1. **Oracle**:Oracle数据库是全球领先的商业...
深入解析DB2--高级管理,内部体系结构与诊断案例.7z.003
本中文教材《DB2-730中文教材-WATCH-watch.pdf》旨在帮助读者了解DB2的产品和工具,以及如何处理不同类型的数据应用程序、数据仓库和OLAP概念。 一、DB2产品和工具基础 DB2包括多个版本,针对不同的操作系统平台,...
《深入解析DB2--高级管理,内部体系结构与诊断案例》 《循序渐进DB2.DBA系统管理、运维与应用案例》 这个资源是第三本《循序渐进DB2.DBA系统管理、运维与应用案例》,此三本书,我会全部上传的,又喜欢DB2的兄弟们下...
在不同版本的DB2之间进行数据交换时,可能会遇到字符集不兼容的问题。解决方法包括调整字符集配置或使用显式的字符集转换。 #### 六、存储过程与函数错误 **SQLCODE:** +462 **SQLSTATE:** 01Hxx **说明:** 由...
在DB2系统中,进程扮演着至关重要的角色,它们是系统运行的基础,负责执行SQL语句、管理内存、处理并发请求以及与操作系统进行交互。下面将详细探讨DB2进程的相关知识点。 一、DB2进程概述 在DB2环境中,进程可以...
Laravel开发-db2-laravelumen DB2Laravelumen是一个简单的用于Laravel或Lumenv5.2的DB2服务提供者。它通过扩展照明数据库组件来提供DB2连接,该组件同时使用查询生成器和雄辩的数据库。
DB2是IBM公司开发的一款关系型数据库管理系统(RDBMS),它被广泛应用于企业级数据处理环境中,特别是在大型企业和金融机构中。 ### DB2高级管理 #### 数据库性能调优 DB2的高级管理涵盖了数据库性能调优的关键...
【第 6 部分:数据并发性】讨论了数据一致性的重要性和 DB2 实现一致性所采用的机制,包括事务处理、锁定和并发控制策略,这对于在多用户环境下保证数据的一致性至关重要。 【第 7 部分:XQuery 简介】随着 XML ...
DB2--302认证考题真题及参考答案【全】
DB2DB2-CLIENT-Sat Jan 30 11_48_21 2010.log Test sourse
源码中包含了查询解析、存储引擎、事务处理、并发控制等关键模块的实现。通过阅读源码,开发者可以学习到如何高效地处理数据、如何保证数据的一致性和完整性,以及如何实现高级特性如MVCC(多版本并发控制)。 2. *...
OTL(Oracle, Odbc and DB2-CLI Template Library)是一种C++模板库,专门用于高效地访问和操控多种关系数据库系统,包括Oracle、DB2、SQL Server、Sybase、Informix、MySQL、Interbase/Firebird、PostgreSQL、...
这个资源是第二本《《深入解析DB2--高级管理,内部体系结构与诊断案例》,此三本书,我会全部上传的,有喜欢DB2的兄弟们下下来看看,机不可失失不再来,最后一句,真喜欢此套书的,还是买实体书吧,拿到手里感觉真好...
本示例中的"spring、mybatis、atomikos实现DB2、Mysql多数据源事务demo"提供了一个实用的框架,演示了如何在Spring框架中结合MyBatis持久层框架以及Atomikos事务管理器来处理来自DB2和MySQL两个不同数据库的数据源...
DB2是一个支持SQL的数据库,它提供了事务处理、数据仓库、数据挖掘等多种功能。在数据库管理系统中,DB2以其高效、安全和可扩展性而闻名。 DB2-701考试涵盖以下几个主要知识领域: 1. **安装与配置**:这包括如何...
### DB2 服务器管理核心知识点解析 #### 一、DB2 实例管理 **1.1 DB2 实例概述** - **定义**: DB2 实例是执行 DB2 命令和函数的逻辑上下文环境。 - **角色**: 可视为服务或守护进程,用于管理对数据库文件的访问...