1.1事务的四大特性

使用事务可以保证业务的正确性,如果一个业务逻辑需要多个sql共同协作才可以完成,但其中一个出错了,这个时候我们希望整个操作全部退出,而事务就可以完成这个功能。

事务的四大特性(ACID)

原子性(Atomicity):一个事务的全部操作在数据库中不可分割,要么全部完成执行,要么全部不执行。

一致性(Consistency):几个并行执行的事务,其执行结果必须与按某一顺序串行执行的结果一致。

隔离性(lsolation):事务的执行不受其他事务的干扰,事务执行的中间结果对其他事务必须是透明的。

持久性(Durability):对于任意已提交的事务,系统必须保证该事务对数据库的改变不被丢失。

注意:使用事务的前提条件,表的类型必须是innodb或bdb类型。

1.2表的类型和事务语句

1)查看表的创建语句

如下可以看到mysql数据库默认引擎是innodb:

show create table infor;

mysql 事务

2)修改表的类型

alter table “表名” engine=innodb;

3)事务语句

开启begin;

提交commit;

回滚rollback;

1.3举例

1)创建表

(1)创建表bank

create table bank(

id int primary key not null,

name varchar(10),

balance int

);

(2)插入数据

insert into bank values(6221001,”小青”,1000);

insert into bank values(6221002,”小明”,2000);

insert into bank values(6221003,”李秋水”,3000);

insert into bank values(6221004,”李沧海”,4000);

mysql 事务

2)使用事务

(1)打开两个cmd窗口,连接数据库

小青要给小明转账100元,转账完成后小青的余额是900元,小明的余额是2100元。

a. begin

在窗口1:

begin;

update bank set balance=900 where id=6221001;

update bank set balance=2100 where id=6221002;

可以看到

mysql 事务

在窗口2,可以看到没有任何改变,说明窗口1的修改并没有写入磁盘,只是内存上的修改而已,所以只有窗口1显示了修改。

mysql 事务

b. commit

回到窗口1:

提交修改

commit;

mysql 事务

回到窗口2:

可以看到已经修改成功了,这个时候已经写入磁盘了。

mysql 事务

c. 回滚

现在李秋水给李沧海转账1000元,转账后李秋水余额是2000元,李沧海是5000元。

在窗口1:

begin;

update bank set balance=2000 where id=6221003;

update bank set balance=5000 where id=6221004;

mysql 事务

由a中可知,在窗口2是没有变化的,继续在窗口1:

rollback;

可以看到又回滚回去了:

mysql 事务

 

相关文章:

  • 2021-08-11
  • 2021-10-14
  • 2021-04-26
  • 2021-07-07
猜你喜欢
  • 2022-12-23
  • 2021-07-21
  • 2021-07-12
  • 2021-06-22
  • 2021-09-03
相关资源
相似解决方案