mssql,firebird,oracle对事务的处理不同
http://hi.baidu.com/buk20090612/blog/item/1c321c1065f3051ab8127b73.html
mssql,firebird,oracle对事务的处理不同,如果要同时支持,编程该怎么做
mssql,firebird,oracle对事务的处理不同,如果要同时支持,编程该怎么做 mssql,firebird默认自动提交 oracle默认不自动提交 如果一个会话有尚未提交的数据改变, 另一个会话 mssql一直挂起,直到第一个会话commit或rollback oracle显示数据改变前的数据 firebird显示数据改变前的数据 如果此时第一个会话commit mssql显示数据改变后的数据 firebird已经连接的会话显示数据改变前的数据 firebird新连接的会话显示数据改变后的数据 不知道哪种处理方式比较好 --会话1----- 1> use sims 2> go 1> create table t1(a1 int); 2> go 1> insert into t1 values (100); 2> go (1 行受到影响) 1> rollback 2> go 消息 3903,级别 16,状态 1,服务器 IBMLT,行 1 ROLLBACK TRANSACTION 请求没有对应的 BEGIN TRANSACTION。 1> begin transaction 2> insert into t1 values (100); 3> go (1 行受到影响) 1> commit; 2> go 1> 1> rollback; 2> go 消息 3903,级别 16,状态 1,服务器 IBMLT,行 1 ROLLBACK TRANSACTION 请求没有对应的 BEGIN TRANSACTION。 1> begin transaction 2> insert into t1 values (100); 3> go (1 行受到影响) 1> rollback; 2> go 1> ---会话2------ Microsoft Windows XP [版本 5.1.2600] (C) 版权所有 1985-2001 Microsoft Corp. C:/Documents and Settings/Administrator>osql -Usa 密码: 1> use sims 2> go 1> select * from t1; 2> go a1 ----------- (0 行受到影响) 1> select * from t1; 2> go a1 ----------- 100 (1 行受到影响) 1> select * from t1; 2> go ----一直挂起,直到--1--commit或rollback a1 ----------- 100 100 (2 行受到影响) 1> 1> select * from t1; 2> go a1 ----------- 100 100 (2 行受到影响) 1> ----会话1---- SQL> create table t1(id varchar(32),v1 decimal(10,2)); SQL> show table t1; ID VARCHAR(32) Nullable V1 DECIMAL(10, 2) Nullable SQL> insert into t1 values('中文',12345678.99); SQL> SQL> select * from t1; ID V1 ================================ ===================== 中文 12345678.99 SQL> commit; ----会话2---- Use CONNECT or CREATE DATABASE to specify a database SQL> connect 'C:/data/test.fdb' user 'SYSDBA' password 'masterkey'; Database: 'C:/data/test.fdb', User: SYSDBA SQL> select * from t1; SQL> show table t1; ID VARCHAR(32) Nullable V1 DECIMAL(10, 2) Nullable ----当会话1commit后--- SQL> select * from t1; SQL> show table t1; ID VARCHAR(32) Nullable V1 DECIMAL(10, 2) Nullable SQL> select * from t1; SQL> ----会话3---- ----当会话1commit后--- Use CONNECT or CREATE DATABASE to specify a database SQL> connect 'C:/data/test.fdb' user 'SYSDBA' password 'masterkey'; Database: 'C:/data/test.fdb', User: SYSDBA SQL> select * from t1; ID V1 |