事务:事务是数据库的中的一个逻辑工作单元,由一系列的数据库操作组成,这些操作要么全部成功完成,要么全部失败,即不对数据库留下任何影响。事务是数据库系统工作的一个不可分割的基本单元。事务可以包含一个对数据库进行操作的完整的用户程序,也可以值包含一个更新操作。
事务有三种模型:
1.隐式事务是指每一条数据操作语句都自动地成为一个事务,每个事务都有显式的开始和结束标记。
2.显式事务是指有显式的开始和结束标记的事务,事务的开始是隐式的,事务的结束有明确的标记。
3.自动事务是系统自动默认的,开始和结束不用标记。
事务的主要语句语句
开始事物:BEGIN TRANSACTION :标识事务从此句开始执行,也是事务回滚的标志点,可省略
提交事物:COMMIT :提交,事务正常执行完,通知系统更新数据库,事务正常结束
回滚事务:ROLLBACK :事务非正常结束,通知系统,所有完成的更新操作全部撤销,将事务回滚至事务开始处并重新开始执行。
显示事务被begin transaction 与 end transaction 标识起来,其中的 update 与 delete 语句或者全部执行或者全部不执行, 如:
begin transaction T1
update student
set name='Tank'
where id=2006010
delete from student
where id=2006011
commit
end transaction T1
关于savepoint
用户在事务(transaction)内可以声明(declare)被称为保存点(savepoint)的标记。保存点将一个大事务划分为较小的片断。
用户可以使用保存点(savepoint)在事务(transaction)内的任意位置作标记。之后用户在对事务进行回滚操作(rolling back)时,就可以选择从当前执行位置回滚到事务内的任意一个保存点。例如用户可以在一系列复杂的更新(update)操作之间插入保存点,如果执行过程中一个语句出现错误,用户可以回滚到错误之前的某个保存点,而不必重新提交所有的语句。
在开发应用程序时也同样可以使用保存点(savepoint)。如果一个过程(procedure)内包含多个函数(function),用户可以在每个函数的开始位置创建一个保存点。当一个函数失败时, 就很容易将数据恢复到函数执行之前的状态,回滚(roll back)后可以修改参数重新调用函数,或执行相关的错误处理。
当事务(transaction)被回滚(rollback)到某个保存点(savepoint)后,Oracle将释放由被回滚语句使用的锁。其他等待被锁资源的事务就可以继续执行。需要更新(update)被锁数据行的事务也可以继续执行。
将事务(transaction)回滚(roll back)到某个保存点(savepoint)的过程如下:
1. Oracle 回滚指定保存点之后的语句
2. Oracle 保留指定的保存点,但其后创建的保存点都将被清除
3. Oracle 释放此保存点后获得的表级锁(table lock)与行级锁(rowlock),但之前的数据锁依然保留。
被部分回滚的事务(transaction)依然处于活动状态,可以继续执行。
一个事务(transaction)在等待其他事务的过程中,进行回滚(roll back)到某个保存点(savepoint)的操作不会释放行级锁(row lock)。为了避免事务因为不能获得锁而被挂起,应在执行 UPDATE 或 DELETE 操作前使用 FORUPDATE ... NOWAIT 语句。(以上内容讲述的是回滚保存点之前所获得的锁。而在保存点之后获得的行级锁是会被释放的,同时保存点之后执行的SQL 语句也会被完全回滚)。
相关推荐
分布式事务学习笔记,总结的很好,希望可以帮助学习者!
四、 redis学习笔记之事务 16 五、 redis学习笔记之pipeline 20 六、 redis学习笔记之发布订阅 23 七、 redis学习笔记之持久化 28 八、 redis学习笔记之主从复制 30 九、 redis学习笔记之虚拟内存 31
PCTP个人学习笔记—TiDB数据库事务设计
spring学习笔记事务的
Oracle学习笔记(事务知识点),事务处理:所谓的事务处理其实就是保证数据操作的完整性,所有的操作要么同时成功,要么同时失败
oracle学习笔记,包含所有oracle概念,包,函数,oracle的组成,oracle的plsq,oracle的存储过程,oracle的事务等
JavaEE5学习笔记01-JTA和数据库事务.
linux运维学习笔记:MySQL数据库事务和引擎知识
redis学习笔记,讲解redis的安装使用,基本原理,常见场景,脚本,持久化,事务等高级特性都有讲解
MySQL学习笔记:MySQL安装,MySQL数据类型,MySQL事务,MySQL函数等学习笔记整理
这个是我从学习中的一些要点,对于sql server 用户很有用.
NULL 博文链接:https://microjava.iteye.com/blog/525981
四、 redis学习笔记之事务 16 五、 redis学习笔记之pipeline 20 六、 redis学习笔记之发布订阅 23 七、 redis学习笔记之持久化 28 八、 redis学习笔记之主从复制 30 九、 redis学习笔记之虚拟内存 31
NULL 博文链接:https://microjava.iteye.com/blog/525973
Spring.NET事务管理机制 原文:http://www.cnblogs.com/GoodHelper/archive/2009/11/16/SpringNet_Transaction.html
简单来说 redis 就是一个数据库,不过与传统数据库不同的是 redis 的数据是存在内存中的,所以存写速度非常快,因 此 redis 被广泛应用于...除此之外,redis 支持事务 、持久化、LUA脚本、LRU驱动事件、多种集群方案。
Weblogic EJB 学习笔记 ejb 基础知识 EJB 组成 EJB 配置描述器 建立ejb 档案文件 容器管理的事务 ejb 引用
Java/JavaEE 学习笔记 作者在杰普学习时的学习笔记,是J2ee初学者必备手册,是大家学习J2EE开发的很好的参考笔记。 Java/JavaEE 学习笔记 内容目录: Unix 学习笔记..........7 一、Unix前言............7 二、...
非常详细的mysql学习笔记,3积分绝对值。内容分为基础架构、日志系统、事务隔离、索引、锁、sql偶尔变慢的问题、数据空洞、排序、慢sql解析九大模块。