DB----事务处理

折月煮酒 提交于 2019-12-27 05:37:19

事务处理

将对数据库进行隔离,acid(原子性,一致性,隔离性,持久性)

  • 只有INnoDB类型的表支持事物处理
  • autocommit=false的情况下操作insert / update / delete(也就是对数据的更改),如果不明确的指定是否commit或者rollback,对外面的数据是没有影响的。
    MyIsam 数据库引擎不起作用,修改:
alter table t1 engine=innodb [AUTO_INCREMENT=1 CHARSET=utf8  comment '数据引擎修改']
show create table t1;

一般设置

set autocommit = 0;   自动提交机制
start transaction;    开启一个事务


demo 一个汇钱的过程
delete from t1 where id=11;   执行操作
update t1 set money = money - 5000 where uid='001'
update t1 set money = money + 5000 where uid='002'

savepoint p1;    保存,设置还原点
rollback to p1;  恢复到p1的原点

防插入锁–自动识别死锁

防插入锁
SELECT * FROM tablename WHERE id>200  那么id>200的记录无法被插入

自动识别死锁:
先进来的进程被执行,后来的进程收到出错消息,并按ROLLBACK方式回滚
innodb_lock_wait_timeout = n 来设置最长等待时间,默认是50

CMD 模式

不让mysql自动提交机制 或为  autocommit= 1; 都会产即生效
mysql > set autocommit = 0;

开启一个事务
mysql > start transaction;

对数据内容进行维护 包括insert update delete这三种操作
mysql > update book set name='redhat' where id=3;

是否提交我的操作,commit是提交  rollback是回滚。
mysql > commit/rollback;
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!