【数据库】事务的使用、事务的ACID特性。

事务

    • 1.概念
    • 2.使用(例子)
    • 3.事务的ACID特性
    • 4.事务的ACID特性可能遭到破坏的因素

1.概念

事务是用户定义的一个数据库操作序列,这些操作要么全做,要么全部不做,是一个不可分割的工作单位。

事务和程序是两个概念。一般讲,一个程序中包含多个事务。

2.使用(例子)

测试表如下

drop table if exists accout;
create table accout(id int primary key auto_increment,name varchar(20) comment '账户名称',money decimal(11,2) comment '金额';insert into accout(name,money) values('张三',8000),('李四',2000);

如:李四向张三借2000元,需要完成两步操作,张三的账户减少金额,李四的账户增加金额。如果在执行第一条SQL时出现网络错误或数据库崩溃,则会产生逻辑错误,张三的钱减少了,但李四的钱没有增加。

解决方案:使用事务来控制,保证以上两个操作,要么全部执行成功,要么全部执行失败。

(1)开启事务 :start transaction;

start transaction;

(2)执行多条SQL语句;

update accout set money = money - 2000 where name = '张三';
update accout set money = money + 2000 where name = '李四';

(3)回滚或提交:rollback / commit ;

commit;

说明:rollback表示事务运行过程中发生某种故障,不能继续执行,所有已完成的操作全部撤销,回滚到事务开始时状态;commit表示提交事务的所有操作。

3.事务的ACID特性

事务具有4个特性:原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)和持续性(Durability)。这四个特性简称为ACID特性。

(1)原子性:事务是数据库的逻辑单位,事务中包括的诸操作要么都做,要么都不做。

(2)一致性:事务执行的结果必须是使数据库从一个一致性状态转变到另一个一致性状态。(如图书馆管理系统中,借书操作可看成一个事务,需要在用户表中添加书数量,书籍表中减少书数量。这两个操作如果只做一个,会出现逻辑错误,数据库就不处于一致性状态了。)

(3)隔离性:一个事务的执行不能被其他事务干扰。即一个事务的内部操作及使用的数据对其他并发事务是隔离的,并发事务之间不能互相干扰。(多个用户操作时,相互意识不到对方。)

(4)持续性:一个事务一旦提交,它对数据库中数据的改变是永久的。

4.事务的ACID特性可能遭到破坏的因素

(1)多个事务并发运行时,不同事务的操作交叉执行。

(2)事务在运行过程中被强行终止。


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部