mssql,firebird,oracle对事务的处理不同

时间:2022-09-12 21:25:41

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