Oracle事务管理(之简单的部分)

本文详细解释了数据库事务的概念及其ACID特性,包括原子性、一致性、隔离性和持久性,并介绍了Oracle数据库中事务的提交与回滚操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

事务(Transaction)是访问并可能更新数据库中各种数据项的一个程序执行单元(unit)。事务通常由高级数据库操纵语言或编程语言(如SQL,C++或Java)书写的用户程序的执行所引起,并用形如begin transactionend transaction语句(或函数调用)来界定。事务由事务开始(begin transaction)和事务结束(end transaction)之间执行的全体操作组成。

例如:在关系数据库中,一个事务可以是一条SQL语句,一组SQL语句或整个程序。

事务是恢复和并发控制的基本单位。

事务应该具有4个属性:原子性、一致性、隔离性、持续性。这四个属性通常称为ACID特性

  原子性(atomicity)。一个事务是一个不可分割的工作单位,事务中包括的诸操作要么都做,要么都不做。

  一致性(consistency)。事务必须是使数据库从一个一致性状态变到另一个一致性状态。一致性与原子性是密切相关的。

  隔离性(isolation)。一个事务的执行不能被其他事务干扰。即一个事务内部的操作及使用的数据对并发的其他事务是隔离的,并发执行的各个事务之间不能互相干扰。

  持久性(durability)。持续性也称永久性(permanence),指一个事务一旦提交,它对数据库中数据的改变就应该是永久性的。接下来的其他操作或故障不应该对其有任何影响。

 

上面的这部分内容呢,是我从百度上面找到的,说的很好,也很全面,在Oracle当中事务可是个非常重要的概念,在以后学习三大框架比如Hibernate和sping当中的事务管理机制也是从概念上和这个类似,所以对事务必须要有深入的理解。

 

1,事务提交

在Oracle当中有些事务呢,需要手动提交,有些事务会自动提交,提交非自动提交的事务是采用commit命令。

 

比如当执行对数据库对象一级的结构的操作的时候,系统会自动提交

Create, alter, drop, rename, revoke, grant, connect,disconnect;

在这里呢,DDL语句操作是无法通过回滚的方式撤销的

 

2,事务回滚

 

要取消事务当中的操作,可以采用事务回滚Rollback命令。

这里呢,一般如果在进行大量的DML语句的操作的时候,事务不会自动提交,所以有的时候为了防止数据丢失,最好在操作结束时候commit

 

当然为了撤销操作,可以通过设置保存点来回滚,下面以一个例子为证:

 

Insert Into fangfan_dept values (30,'计算机','wuhan');

 

Insert Into fangfan_dept values (40,'财务','hefei');

 

savepoint a;

select * from fangfan_dept;

select * from fangfan_dept;

delete from fangfan_dept where deptno=50;

 

select * from fangfan_dept;

使用Rollback将依次回滚到a和b所在的操作的位置。这里很简单不说明了

那么请注意要是在两个还原点任意一个地方加上这么一句

create table fang_test as select * from dept;

那么它还能回滚吗?

答案是否定的,这里如果自己试试的话,你将会有很多有趣的结论。

Insert Into fangfan_dept values (50,'保洁','长沙');

 

delete from fangfan_dept where deptno=30 ;

savepoint b;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值