Oracle19C入门到熟练010-事务操作

学习要求

有一定关系型数据的操作功底,会SQL语句

教学目标

学习数据库中事务处理

概念

在数据库中事务是工作的逻辑单元,一个事务是由一个或多个完成一组的相关行为的SQL语句组成,通过事务机制确保这一组SQL语句所作的操作要么完全成功执行,完成整个工作单元操作,要么一点也不执行。

事务的属性

  • 原子性(Atomicity)-事务的原子性强调了一个事物是一个逻辑工作单元,是一个整体,是不可分割的。一个事务所包含的操作要么全部做,要不全部不做。

  • 一致性(Consistency)-一个事务执行一项数据库操作,事务使数据库从一种一致性的状态变换成另一种一致性状态。

  • 隔离性(Isolation)-在事务未提交前,它操作的数据,对其他用户不可见。

  • 持久性(Durability)-一旦事务成功完成,该事务对数据库所施加的所有更新都是永久的。

事务的开始和结束

以第一个DML语句的执行作为开始

以下面的其中之一作为结束:

  • commit或rollback语句

  • DDL或DCL语句(自动提交)

  • 用户会话正常结束--commit

  • 系统异常终了--rollback

事务操作

COMMIT:事务提交命令

在数据库的插入、删除和修改操作时,只有当事务在提交到数据库时才算完成。在Oracle 数据库中, 在事务提交前,只有操作数据库的用户才能有权看到所做的事情,别人只有在最后提交完成时才能看见。

ROLLBACK:事务回滚命令

-- 事务测试
-- 先查看表数据
select * from dept;
-- 执行DML开始事务
delete from dept where deptno = 60;  
-- 查看删除效果
select * from dept;
-- 回滚事务
rollback;
-- 查看数据
select * from dept;

注意: 一旦执行commit 之后,数据就无法进行回滚了

-- 事务测试
-- 先查看表数据
select * from dept;
-- 执行DML开始事务
delete from dept where deptno = 60;  
-- 查看删除效果
select * from dept;
-- 提交事务
commit;
-- 查看数据
select * from dept;
-- 回滚事务
rollback;
-- 查看数据
select * from dept;

SAVEPOINT

事务保留点,有点类似分段存档。

使用 SAVEPOINT 语句在当前事务中创建保存点。

使用 ROLLBACK TO SAVEPOINT 语句回滚到创建的保存点。

-- 查看数据
select * from dept;
-- delete 
delete from dept where deptno = 61;
-- 保留点A
savepoint A;
update dept set loc = 'BEIJIN' where deptno = 60;
insert into dept(deptno, dname, loc) values(63, 'BOSS', 'DONGGUAN');
-- 保留点B
savepoint B;
-- delete
delete from dept where deptno = 63;

-- 分别执行回滚
rollback to savepoint B;
rollback to savepoint A;
rollback;

事务的隔离级别

隔离级别脏读不可重复读幻读
Read uncommited(读未提交的)YYY
Read commited(读提交的)NYY
Repeatable readNNY
SerializableNNN

Oracle支持的隔离级别:

事务隔离级别影响
Read commitedOracle默认的隔离等级,对一条SQL,可以保证数据的一致性,对于一个事务,无法做到repeatable read。
Serializable只能看到事务开始时所有提交的改变以及自身的改变
Read-only只能看到事务开始时所有提交的改变,自身不允许DML操作

orcale默认是Read commited 级别,可以下面语句对隔离级别进行修改

Set transaction isolation level read committed
-- 隔离级别验证
select * from dept;
delete from dept where deptno = 60;

-- 新开一个命令窗口,查看60数据
select * from dept;

--- commit之后再观察
commit; 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

浪飞yes

我对钱没兴趣~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值