mysql 事务 回滚

事务的四个特性ACID,原子性,一致性,隔离性,持久性,

开始一个事务:

->begin;或者start transaction;

->sql语句

->savepoint identifier,(创建一个保存点)

->commit;或者rollback;

Question:如果rollback没有生效,

1.请查看你的存储引擎  show variables like '%storage_engine%';

2.查看你的表的引擎show create table 表名;

有些引擎并不支持事务,

3.查看你的mysql提供了哪些引擎:show variables like '%engine%';'

最好选择InnoDB吧

ps:我遇到一次rollback就是不起做哟,最后退出mysql终端命令行,然后重新连接之后又尝试了一次rollback就生效了(emmm..)

所以以后可以重启mysql或者重新连接mysql试试。

--------------------------------------------------------

set autocommit=0和start transaction的区别(转载地址

autocommit为0,(不知道autocommit=OFF应该是同一个意思吧)是指事务非自动提交,自此句执行以后,每个SQL语句或者语句块所在的事务都需要显示"commit"才能提交事务。

1.不管autocommit为0或者1,start transaction之后,只有当commit之后数据才会生效,rollback之后会回滚。

2.当autocommit为0时,不管有没有start transaction,只有当commit之后数据才会生效,rollback之后会回滚。

3.当autocommit=1,并且没有start transaction,调用rollback是没有用的。

猜你喜欢

转载自blog.csdn.net/nanbiandehe/article/details/85232366