个人觉得多个select时,不用放入一个事务,select查询本身不需要事务提交。而如果在修改数据时,不提交事务,则会修改失败。
创新互联建站专注于企业营销型网站、网站重做改版、南宁网站定制设计、自适应品牌网站建设、H5网站设计、商城建设、集团公司官网建设、外贸网站制作、高端网站制作、响应式网页设计等建站业务,价格优惠性价比高,为南宁等各大城市提供网站开发制作服务。
select只是用来进行查询操作,不需要事务回滚,因为select不会对数据库的产生持久化的修改,没有必要在数据发生不一致的时候进行回滚。如果要防止数据的不一致情况,可以通过修改事务的隔离级别实现。
建一张test表
set autocommit=0;//设置mysql不自动提交就是不自动执行sql语句
begin; //开启一个事务
insert into test value(test);
insert into test value(test2);
commit;//提交 ,会执行上面2句sql语句 此时test 表里面有 test 和 test2 2条数据
begin; //开启一个事务
insert into test values(test3);
rollback; //回滚 , test表里面并没有test3 这条数据
通常 在php里面会判断 if(!mysql_query($sql)){mysql_query('rollback');} 就是如果没有成功执行sql就进行回滚,比如转账我给你10块钱 先从我账号里面减去10元 再从你账户加10元 这就是2条sql 要保证都能执行完成
想用就用,不想用就不用呗。 事务使得要么两个表都插入数据,要么都不插入。 总之,还是第一句话,爱用不用。
SELECT,INSERT,UPDATE或DELETE都会开启事务。
如果AUTOCOMMIT设置为1(默认值),每一个SQL语句都被认为是一个完整的事务。
AUTOCOMMIT设置为0时,在随后的一系列语句的作用就像一个事务,直到一个明确的COMMIT语句结束。