WEB开发网
开发学院数据库Oracle Oracle与SQL Server事务处理的比较 阅读

Oracle与SQL Server事务处理的比较

 2009-04-16 13:13:08 来源:WEB开发网   
核心提示: 四.DDL语句对事务的影响1.Oracle中DDL语句对事务的影响在Oracle中,执行DDL语句(如Create Table、Create View等)时,Oracle与SQL Server事务处理的比较(5),会在执行之前自动发出一个Commit命令,并在随后发出一个Commit或者R

四.DDL语句对事务的影响

1.Oracle中DDL语句对事务的影响

在Oracle中,执行DDL语句(如Create Table、Create View等)时,会在执行之前自动发出一个Commit命令,并在随后发出一个Commit或者Rollback命令,也就是说,DDL会象如下伪码一样执行:

Commit;
 

DDL_Statement;

If (Error) then

Rollback;

Else

Commit;

End if;

我们通过分析下面例子来看Oracle中,DDL语句对事务的影响:

Insert into some_table values(‘Before’);
 

Creaate table T(x int);

Insert into some_table values(‘After’);

Rollback;

由于在Oracle执行Create table语句之前进行了提交,而在Create table执行后也会自动发出Commit命令,所以只有插入After的行被回滚,而插入Before的行不会被回滚,Create table命令的结果也不会被回滚,即使Create table语句失败,所进行的Before插入也会被提交。如果最后发出Commit命令,因为插入Before及Create table的操作结果已经在之前提交,所以Commit命令影响的只有插入After的操作。

2.SQL Server中DDL语句对事务的影响

在SQL Server中,DDL语句对事务的影响与其他DML语句相同,也就是说,在DML语句发出之前或之后,都不会自动发出Commit命令。

在SQL Server 2000中,对于与上面Oracle同样的例子,最后发出Rollback后,数据库会回滚到插入Before之前的状态,即插入Before和After的行都会被回滚,数据表T也不会被创建。

如果最后发出Commit操作,则会把三个操作的结果全部提交。

五.用户断开数据库连接对事务的影响

另外,对应于Oracle的管理客户端工具SQL*Plus,在SQL Server 2000中是osql,两种管理工具都是命令行工具,使用方式及作用也类似,但是在SQL*Plus中,用户退出连接时,会自动先发出Commit命令,然后再退出,而在osql中,如果用户退出连接,会自动发出Rollback命令,这对于SQL Server的自动提交模式没有什么影响,但如果处于隐式事务模式,其影响是显而易见的。对于两种数据库产品的其他客户端管理工具也有类似的不同之处。

上一页  1 2 3 4 5 

Tags:Oracle SQL Server

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接