事务控制

事务控制概述

  • 事务:一组相关操作组合,要么全部成功、要么全部失败的逻辑工作单元。
  • 不论发生何种情况,必须保证事务能正确、完整地执行。
  • DBS运行的最小逻辑工作单元是“事务”,所有对数据库的操作,都要以事务作为一个整体单位来执行或撤销。
  • 事务必须满足的ACID属性:
    1.原子性:不可分割
    2.一致性:数据一致状态
    3.隔离性:避免并发事务相互干扰
    4.持久性:事务正常结束,数据修改是持久的

事务的开始和组成

数据库事务组成

  • 0~n条DML语句

  • 1条DDL语句

  • 1条DCL语句
    事务开始于第一条可执行语句
    事务结束于:

  • 遇到commit或rollback语句

  • 遇到DDL或DCL语句

  • 用户会话结束

  • 系统奔溃

事务的提交

提交和回滚操作是为了更好地保证数据的一致性
提交事务就是结束当前事务地运行并确定其所做的数据修改,使用COMMIT指令实现事务地提交。
下述情况下事务会被自动提交

  • 执行一个DDL语句
  • 执行一个DCL语句
  • 正常结束会话
    会话异常终止/系统奔溃时事务会被自动回滚

提交/回滚前数据状态

  • 当前事务中数据状态的改变是可以恢复的
  • 当前事务中的DML操作结果只对当前用户可见,其他用户看不到当前事务结束
  • 当前事务中DML语句所涉及到的数据表被锁定,在此期间其他用户不允许修改表的结构

事务提交后数据状态

  • 事务中对数据的修改永久生效、不可再撤销
  • 数据修改之前的状态永久性丢失、不可恢复
  • 所有用户都将看到操作后的结果
  • 事务中的保存点被清除

SQL PLUS的自动提交

SQL PLUS中执行SQL语句时可以设置是否自动提交,缺省设置为非自动提交
查看设置:

SHOW AUTOCOMMIT;

改变设置

SET AUTOCOMMIT ON;--设置为自动提交
SET AUTOCOMMIT OFF;--设置为非自动提交

回滚事务

ROLLBACK指令可以修改实现事务的回滚——撤销
当前事务所做的数据修改,使数据恢复到事务开始之前的状态,并释放相关的记录锁和表级锁

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值