MySql--事务

特点:

-- 原子性 一致性

第一步 打开 终端1 终端2
第二步 终端1 打开事物 begin
   终端1 update 表名 set 字段="xxx" where ...;
   终端1 select * from 表名;  发现数据改变
第三步 终端2 select * from 表名;  
   发现数据其实并没有改变 其实这个时候对数据的相关操作信息存在缓存中,
   当commit之后,这些操作才会一次性的完成
第四步 终端1 commit 数据数数据真的改变
   终端2 select * from 表名,数据改变了

-- 隔离性
第一步 打开 终端1 终端2
第二步 终端1 打开事物 begin
   终端1 update 表名 set 字段="xxx" where ...;
第三步 终端2 update 表名 set 字段="yyy" where ...;
   发现 处于阻塞状态 
第四步 终端1 commit
   终端2 阻塞状态解除 数据修改成 yyy
   
-- 回滚(rollback)
第一步 打开 终端1 begin
第二步 终端1 update 表名 set 字段="xxx" where ...;
第三步 rollback 数据返回最开始的原始值

-- 持久性
一旦事务提交,则其所做的修改会永久保存到数据库

 注意 
innodb能使用事物
使用python操作数据库的时候 默认开启事物的 
但是python对数据库进行增删改的时候 需要手动commit

使用终端操作数据库(也就是mysql的客户端)的时候 也是默认开始事物的
只是在回车确认操作的时候 终端会默认的commit 所以我们不需要commit


事物最主要解决的问题
某些事情需要一次性完成 中途不允许出现中断 例如银行取钱 事物可以解决这种问题

猜你喜欢

转载自blog.csdn.net/qq_38792622/article/details/80219054