Mysql基本命令之事务处理

事务,其实就是数据库中的一种保障机制,它能够保证多条具有内在联系的sql语句的执行,执行起来像一条语句一样的效果:要么都执行了,要么都没有执行。

事务的基本特征

  • 原子性:一个事务中的所有语句,应该做到:要么全做,要么一个都不做;
  • 一致性:让数据保持逻辑上的“合理性”并得到实施,比如:一个商品出库时,既要让商品库中的该商品数量减1,又要让对应用户的购物车中的该商品加1;
  • 隔离性:如果多个事务同时并发执行,但每个事务就像各自独立执行一样。
  • 持久性:一个事务执行成功,则对数据来说应该是一个明确的硬盘数据更改(而不仅仅是内存中的变化)。

事务模式

所谓事务模式,其实指的是,通常cmd操作界面中,常规的各种语句,是否“立即生效”的问题:

  • 自动提交模式:每一条语句,都会在结束并回车后,立即执行且立即生效;
    默认情况下,在mysql中,都是自动提交模式——所以,我们之前所观察的,每次执行后,都是“马上生效”的。
  • 人为提交模式:每一条语句,结束并回车后,并不会立即生效,而是需要再使用一条“提交”语句,才算生效;

执行事务的基本流程

这里,要介绍的是,常规使用事务的基本流程模式,这种流程,跟前面的事务模式的设置值没有关系。
即,不管事务模式设置为On还是Off,这里的事务流程都是有效的。
因为,我们会给出一个“明确的”事务开始的机制。从这里开始,就表示是“一个事务”。

大致如下:
1, 开启一个事务:
start transaction;
也可以使用“begin; ”
2,执行业务中需要保持逻辑一致性的多条语句;
insert .....;
delete ......;
update ......;
事务中,其实只是对增删改进行控制,而查询语句,无所谓——因为查询不改变数据;
3,判断是否出错并采取相应措施:
if (出错){
rollback;//就是通常所说的“回滚”——就是啥也不做了,就是全部撤销;
}
else{
commit;//就是通常所说的“提交”——就是全都生效;
}

事务提交流程

猜你喜欢

转载自blog.csdn.net/ithover/article/details/78635006
今日推荐