这么玩
真的变了吗?把cmd窗口关闭了看看。
就是固定的套路才行:start transaction->执行SQL->rollback;
执行每一条SQL之前都要start transaction才行,否则rollback是无效的。
无论是否写start transaction,执行一条SQL语句的时候都是有事务的。为什么这么说?
mysql数据库默认是自动事务。默认事务是指:写任何一条SQL语句它都有一个事务。
你写的任何一条SQL语句它的底层是start transaction update commit。
以前我们执行时也是有事务的,但是那是一条SQL语句一个事务。start transaction也是有事务的,相对于自动事务的优点是:可以控制N多条SQL语句都在一个事务里面。自动事务是做不了的。自动事务是写一个SQL就一个事务,写一个SQL就一个事务。
而start transaction是开启了一个事务,下面写了N多条SQL语句都是在一个事务里面的。
start transaction是人为的手动操作,第二种是mysql本身是提供事务的,自动事务是默认开启的,你写的任何一条SQL语句都是有事务的。如果你把它的值改变了在操作的过程中你就必须手动地commit了。第二个操作一般是一条SQL的时候用。我这操作一条SQL就搞定了那就用自动事务。如果操作是由多条SQL完成那就用start transaction。