版权声明:此博客为个人博客,不涉及商业用途,仅提供学习参考,内容均来自个人原创以及互联网转载和摘录。 --------------------- 本文来自 路西法Lucifer 的CSDN 博客 ,全文地址请点击: https://blog.csdn.net/qq_37495786/article/details/83353681
事务:
定义:
是以一种可靠、一致的方式,访问和操作数据库中数据的程序单元。
原则:
*a、 原子性 * b、一致性 * c、隔离性 * d、持久性
场景:
账户A给账户B转100块钱。
账户A:+100,账户B:-100,是在两个事务当中的。
原子性:账户A中+100,账户B-100,两个事务要么都成功,要么都失败,不可能存在账户A+100,而账户B却没有-100。
一致性:账户A和账户B,两个账户之间不管怎么转账,两个账户之间的总金额不会发生变化。
隔离性:账户A给账户B转账100,账户B减去100,在转账中途,同时账户B就开始查余额,这两个操作是发生在两个事务当中的,那么账户B能不能查到账户A转到的100?这就是数据库的隔离性定义的。这会根据数据库隔离性的设置,有不同的表示。
持久性:账户A与账户B之间的转账,一旦修改成功,就会存在数据库中,不管系统是重启或者什么的,都可以永久保存在数据库中,账户B就可以看到转账过来的100。
mysql语法:
BEGIN TRANSACTION;开启事务
开启事务之后,后面的转账都是在这个事务当中,当commit之后,事务才会被提交。如果中途想回滚,可以rollback,中间的事务就会回滚。
此时去执行剩下两条语句commit一下,提交事务,看下图,可以很清晰的发现,只有提交事务之后才可以修改成功数据。
mysql可以通过select @@GLOBAL.TX_ISOLATION,@@TX_ISOLATION;查询事务的隔离级别。
数据库默认都是可重复读。