建站学 - 轻松建站从此开始!

建站学-个人建站指南,网页制作,网站设计,网站制作教程

当前位置: 建站学 > 数据库 > 数据库综合 >

MSSQL和Oracle数据库关于事务处理的差异性

时间:2011-03-20 09:00来源: 作者: 点击:
本文讲述MSSQL和Oracle数据库关于事务处理的差异性,并介绍Oracle如何实现事务处理。   什么是事务   数据库事务(Database Transaction)是一组数据库操作的处理单元。事务符合ACID的特性:Atomic:原子性,要么全部要么一无所有。Consistent:一致性,所有依赖关系以及约
本文讲述MSSQL和Oracle数据库关于事务处理的差异性,并介绍Oracle如何实现事务处理。

  什么是事务

  数据库事务(Database Transaction)是一组数据库操作的处理单元。事务符合ACID的特性:Atomic:原子性,要么全部要么一无所有。Consistent:一致性,所有依赖关系以及约束一致。Isolated:分离性,不同事务不互相影响。Durable:持久性,提交事务的数据需要持久化。

  为什么要使用事务

  实现事务主要有两大功能:

  1.保证数据库的consistent(一致性状态),保持所有依赖关系以及约束一致)。哪怕数据库管理系统出现故障时(例如断电),也能恢复到一致性状态。例如一个银行转帐系统,张三给李四转3000圆RMB,张三帐号上减3000和李四帐号上加3000需要同时完成,否则系统的帐就不平了。也例如有些销售系统的汇总表和明细表,是一个主表和一个从表,需要同步更新。

  2.并发时分离不同事务操作。例如编辑过程中的数据不给其他事务查询到。这也是相对的,在特效需求下可能要支持dirty read(脏读),但不是这里讨论的范围了。

  SQL Server 2008 的事务类型

  1.自动提交事务 Autocommit Transactions

  这是SQL Server默认的事务类型,每一条单独的SQL语句(SQL statement)都是单独的一个事务,语句执行完毕后自动提交。调用方不需要手工控制事务流程。

  2.显示事务 Explicit Transactions

  调用方需要调用API或者使用T-SQL的BEGIN TRANSACTION 语句来打开事务。需要调用COMMIT 或者 ROLLBACK TRANSACTION 来提交或者回滚。

  3.隐式事务 Implicit Transactions

  使用SET IMPLICIT_TRANSACTIONS ON把事务模式变成隐式模式。调用方不需要执行BEGIN TRANSACTION 语句来打开事务。数据库引擎执行到SQL语句的时候自动打开事务。调用方需要调用COMMIT 或者 ROLLBACK TRANSACTION 来提交或者回滚。当数据库引擎执行下一个SQL语句时又自动打开一个新事务。

(责任编辑:admin)
织梦二维码生成器
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 验证码:点击我更换图片