数据库中的事务

事务(Transaction)是并发控制的基本单位。所谓的事务,它是一个操作序列,这些操作要么都执行,要么都不执行,它是一个不可分割的工作单位。例如,银行转账工作:从一个账号扣款并使另一个账号增款,这两个操作要么都执行,要么都不执行。所以,应该把它们看成一个事务。事务是数据库维护数据一致性的单位,在每个事务结束时,都能保持数据一致性。

事务具有以下4个基本特征。

●   Atomic(原子性):事务中包含的操作被看做一个逻辑单元,这个逻辑单元中的操作要么全部成功,要么全部失败。

●   Consistency(一致性):只有合法的数据可以被写入数据库,否则事务应该将其回滚到最初状态。

●   Isolation(隔离性):事务允许多个用户对同一个数据进行并发访问,而不破坏数据的正确性和完整性。同时,并行事务的修改必须与其他并行事务的修改相互独立。

●   Durability(持久性):事务结束后,事务处理的结果必须能够得到固化。

事务的语句
 开始事物:BEGIN TRANSACTION    mysql_query(‘START TRANSACTION‘);//开始事务
 提交事物:COMMIT TRANSACTION    mysql_query(‘COMMIT‘);//提交事务
 回滚事务:ROLLBACK TRANSACTION    mysql_query(‘ 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
简单地说,事务是一种机制,用以维护数据库的完整性。

其实现形式就是将普通的SQL语句嵌入到Begin Tran...Commit Tran 中(或完整形式 Begin Transaction...Commit Transaction),当然,必要时还可以使用RollBack Tran 回滚事务,即撤销操作。

时间: 2024-10-29 00:06:10

数据库中的事务的相关文章

数据库中的事务和并发问题探讨

数据库中的事务和并发问题探讨 引子 最近有同事写了段代码,负责创建订单的逻辑,代码审查时发现可能会有并发的问题.同事并不认同,他认为他的逻辑是写在存储过程中的,应该没有问题. 代码的逻辑大概是(伪代码): begin transaction if 查询到客户存在进行中的订单 rollback transaction if 查询到设备存在进行中的订单 rollback transaction 插入订单 commit transaction 下面针对这个逻辑进行分析,为什么这个事务会出现并发问题.

数据库中的事务是什么?

1.事务是作为一个逻辑单元执行的一系列操作,一个逻辑工作单元必须有四个属性,称为 ACID(原子性.一致性.隔离性和持久性)属性,只有这样才能成为一个事务: 原子性 2.事务必须是原子工作单元:对于其数据修改,要么全都执行,要么全都不执行. 一致性 3.事务在完成时,必须使所有的数据都保持一致状态.在相关数据库中,所有规则都必须应用于事务的修改,以保持所有数据的完整性.事务结束时,所有的内部数据结构(如 B 树索引或双向链表)都必须是正确的. 隔离性 4.由并发事务所作的修改必须与任何其它并发事

Oracle 数据库中不同事务并发访问的问题

现象 以SQL/Helper为例,打开不同的SQL窗口,对同一个表格进行操作,如下所示. 窗口1:当执行更新任务.紧接着执行查询时获得一组查询结果.结果是对的. 窗口2:而在另外一个SQL查询窗口中执查询,却得到更新前的结果. 当关闭窗口1时,执行窗口2,发现出现正确的更新结果. 分析 初步分析是数据库的并发访问的问题.当在窗口1中执行更新操作,对数据表格的引用并未有消除,而是在数据库中产生了针对当前事务的副本结果.而窗口2所针对的查询还是旧的更新前的数据库原本.当关闭窗口1后,数据库中的表格被

MySQL数据库中的事务特性

事务特性 事务具有4个特性:原子性.一致性.隔离性.持久性.这四个属性通常称为 ACID 特性. 原子性(atomicity):一个事务应该是一个不可分割的工作单位,事务中包括的操作要么都成功,要么都不成功. 一致性(consistency):事务必须是使数据库从一个一致性状态变到另一个一致性状态.一致性与原子性是密切相关的. 隔离性(isolation):一个事务的执行不能被其他事务干扰.即一个事务内部的操作及使用的数据在事务未提交前对并发的其他事务是隔离的,并发执行的各个事务之间不能互相影响

EJB学习笔记之八(通俗易懂数据库中的事务)

1.事务概念 事务是由一步或者几步数据库操作序列组成的逻辑执行单元,这系列操作要么全部执行,要么全部放弃执行. 通俗的说的话,事务就是一件事情,要么成功执行到底,要么回到起点,什么都不做. 事物的特性(ACID) 原子性(Atomicity):正如原子时自然界最小颗粒,具有不可再分的特征一样.意思就是说,咱的事务是一个逻辑单元,不能再拆分了,比如整体的执行. 一致性(Consistency):事务执行的结果,必须使数据库从一个一致性状态,变到另一个一致性状态.比如说银行之间的转账,从A账户向B账

Sqlite数据库中的事务

public void testTrasaction() throws Exception{  PersonSQLiteOpenHelper helper = new PersonSQLiteOpenHelper(getContext());  SQLiteDatabase db = helper.getWritableDatabase();  db.beginTransaction();  try{   db.execSQL("update sys_user set account = acc

数据库中的事务控制语句

1.提交事务(commit) 说明:把对象数据库的修改操作,真实在底层执行,只有提交事务以后,数据才真实存在 create table emp( id number(4) name varchar2(20) ); 首先表插入数据: insert into emp values(1,'his'); insert into emp values(2,'me'); insert into emp values(3,'she'); 2.回滚事务(ROLLBACK) 说明:可以撤销未提交的事务 inser

Oracle数据库中平均事务响应时间的计算公式

注: 该计算公式取自:白鳝 <<oracle 优化日记>>,p316页 Top 5 Timed Events Event Waits Time(s) Avg Wait(ms) % Total Call Time Wait Class direct path read 327,284 15,555 48 86.4 User I/O CPU time   1,093   6.1   db file sequential read 283,101 509 2 2.8 User I/O d

数据库事务及其EF中如何处理事务

一.基础知识 1)         使用事务级别ReadUnCommited 会产生脏读现像,意味着读取到的为UnCommited(未提交)的数据.怎么理解呢?在使用该隔离级别的事务开始后.更新了数据库某一行的数据,但是事务的工作量比较大,后续还有一大堆代码还没执行完呢.不巧的是有个哥们过来读数据了,这个时候读到的就是未提交的值,如果后继工作一切正常,也没什么影响.一旦后面的代码执行中出错,就会产生不一致的错误,适用于对事务极度自信的情况下,特点为可读不可改.关于不可改需解释一下,MS SQL中