事物操作
需求:在银行,所有用户都有一个账户信息,假设两个用户之间转账,一方减少必定要另外一方增加
假设:在操作过程,只有一条信息被更新成功,另外一条信息更新失败(没有更新)
事物处理指的是当一组事物进行时,必须要满足全部条件才能算执行成功,任何一个执行失败都将导致整个的事物操作失败。
SQL语句是以行为单位执行,所以一个事物,往往是多条SQL语句需要执行
创建银行用户数据表
事物操作如下
1. 开启事物
语法:start/begin transaction;
2. 先执行一条SQL语句,但是该记录并不直接
3. 再执行其他SQL语句
4. 如果全部执行成功,再进行数据同步(把数据写入到数据库),如果有一个步骤失败,所以的操作全部放弃
a) 成功语法:commit
b) 失败语法:rollback
事务处理(rollback)
在事务执行过程中,执行事物的客服端得到的数据经过SQL日志处理过的数据
事务没有处理完毕,数据源的数据永远没有改变,所以得到的结果永远都不变
Rollback 失败处理,最终清除日志文件里的事务信息,不需要写入到数据库
事务处理(Commit)
提交事务,成功处理,将日志文件里的事务信息写入到数据库
系统中默认是采用非事物模式进行数据操作,在系统中有一个变量记录数据操作的方式
只要修改autocommit = off就可以改变系统对事物处理模式
通常,操作过程中不关闭事物的自动提交,因为普通的数据操作,没有那么高的安全性要求.
事物特点
原子性:Atomicity,一个事物是一个整体,要么全部成功,要么全部失败
一致性:consistency,在数据操作的前后,数据库的数据没有被改变,直到事物提交
隔离性:isolation,在事物处理的过程中,其他的客服端数据的操作不受影响(主要指查看)
如果在一个事物正在处理的时候,另外一个客服端,对同一条正在事物中处理的数据进行更新的时候,那么需要等待事物的提交之后才能执行持久性。
持久性:事物一旦提交,那么整个修改不可逆转
事物使用?
一般比较少用,一般跟钱相关的时候,会使用到事物处理来保证数据安全