Oracle:数据库事务

数据库事务

永久性记录事务中SQL语句的结果,需要执行commit语句,从而提交事务,要取消SQL执行的结果,需

要执行ROLLBACK语句从而回滚事务,将所有行重新设置为原始状态

事务的开始与结束
事务是用来分割SQL语句的逻辑工作单元,事务有起点也有终点;
1、连接到数据库,执行一条DML语句(INSERT,UPDATE,DELETE)
执行COMMIT或ROLLBACK,事务结束

2、执行DDL语句如(CREATE TABLE..会自动执行commit;

3、执行一条DCL语句(GRANT,,自动执行COMMIT;

4、断开与数据库连接,会自动执行commit;

5、若数据库出现异常,则会自动执行ROLLBACK;

保存点

在事务中设置保存点,这样可以将修改回滚到保存点处。

 

 

事务的ACID特性

原子性(Atomic) :一个事务中包含的所有SQL语句都是一个不可分割的单元。

一致性(Consist) : 事务必须确保数据库的状态一致。

隔离性(Isolated) : 多个事务可以独立运行,彼此不影响

持久性(Durable) : 事务一旦提交,数据库的变化会永久保留下来。

并发事务

Oracle数据库支持多个用户同时与数据库进行交互,这种同时运行的事务交并发事务(Concurrent

transaction).

两个同时运行的事务只有在其中一个执行commit语句后才会对另一个获取的内容产生影响。

 

事务锁

当事务1对某条数据执行修改操作,但是没有执行commit语句,这时事务1已经对该条数据上锁,事务

2必须等到事务1 执行commit以后,释放锁,才能对该条数据执行修改或删除操作。

 

 

事务隔离级别(transaction isolation level)
T1代表事务1,T2代表事务2
幻像读取(phantom read) T1读取一条指定where条件的数据,T2插入一行记录,且该记录满足

T1where条件,T1再次检索,可以看到T2新增的行。

不可重复读取(nonrepeatable read)T1读取一行,T2修改了T1读取的数据,T1再次读取,数据变化。

脏读(dirty read)T1更新记录,未提交,T2读取该记录,T1执行回滚,T2读取的行无效

隔离性级别从低到高:


READ UNCOMMITTED:允许,幻像读取,不可重复读,脏读
READ COMMITTED:允许,幻像读取,不可重复读取
REPEATABLE READ:允许幻像读取
SERIALIZABLE:均不允许

查询闪回:

如果错误的提交数据,并想查看被秀该行原来的值,可以使用查询闪回(query flashback),执行这种

操作必须有execute权限

再次使用闪回操作时,必须先禁用

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值