事务的四个特性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是没有用的。