事务 | 事务就是把一批SQL语句作为一个整体,如何所有的SQL语句执行后没有错误,就一起执行,只要其中一条SQL语句有错误,则所有的SQL语句都不执行。
MySQL默认的机制是:每一条SQL语句是一个独立的事务。
事务有四个特点:原子性、一致性、隔离性、持久性 也称: ACID 原子性:每一个事务是一不可分割的独立单元。 一致性:事务执行前后的数据要保持一致。 隔离性:事务单元是独立的,事务之间互不干涉。 持久性:也叫永久性,事务提交后,对数据表中的数据的影响是永久的。 |
事务类型 | 1. 自动提交型,这是默认的类型,关闭自动提交 set autocommit=0; 打开自动提交 set autocommit=1; 2. 隐式事务。 3. 显示的事务。我们要做的都是显示的事务,显示的事务需要显示的开始事务,并显示的提交或回滚。 案例: set autocommit=0; /*关闭自动提交*/ start TRANSACTION; /*事务开始*/ update student set name= '孙鹏' where studentno = 10002; commit; /*表示事务提交,上面的操作才会永久影响的数据表*/ set autocommit=1; /*打开自动提交,才不会影响后面SQL语句的执行。*/ |
如下图一个银行卡转账的功能 顾客A银行卡初始金额是2500,卖家初始金额是9500,他们之间发生了500块钱的交易,如果不使用事务处理,万一顾客A的银行卡上没有500块钱,扣钱不超过,但是卖家增加500成功,这就会对我们造成不便。经过Mysql的事务处理之后 ,把这两条语句变成了一个整体,如果所有语句都没有出错就会一起执行,有一个语句出错,则sql语句都不会执行。