当前位置:Gxlcms > 数据库问题 > MySQL-第十四篇事务管理

MySQL-第十四篇事务管理

时间:2021-07-01 10:21:17 帮助过:26人阅读

0为关闭自动提交,即开启事务

  一旦在MySQL的命令行窗口中输入以上语句关闭自动提交,该命令行窗口里的所有DML语句都不会立即生效。上一个事务结束后第一条DML语句将开始一个新的事务,而后续执行的所有SQL语句都处于该事务中,除非显式使用commit来提交事务、或者正常退出、或者运行DDL、DCL语句导致事务隐式提交。当然也可以使用rollback回滚来结束事务,使用rollback结束事务将导致本次事务中的DML语句所做的修改全部失效。

 (注意:一个MySQL命令行窗口代表一次连接session,在该窗口里设置set autocommit=0,相当于关闭了该连接session的自动提交,对其他连接不会有任何的影响,即其他命令行窗口不受这个设置影响。)

7、如果不想关闭整个命令行窗口的自动提交,而是想临时性地开始事务。

    可以使用MySQL提供的start  transaction或begin两个命令,处于start transaction或begin后的DML语句不会立即生效,除非使用commit显式提交事务,或者使用DDL、DCL语句来隐式提交事务。

8、提交,不管是显式提交还是隐式提交,都会结束当前事务;回滚,不管是显式回滚还是隐式回滚,都会结束当前事务。

9、MySQL还提供了savepoint来设置事务的中间点,通过设置事务的中间点可以让事务回滚到指定的中间点,而不是回滚全部事务。

savepoint a;

   一旦设置了中间点,就可以使用rollback回滚到指定中间点。

rollback a;

10、JDBC的事务支持

   1》JDBC连接也提供了事务支持,JDBC连接的事务支持由Connection提供,Connection默认打开自动提交,即关闭事务。可以调用Connection的setAutoCommit()方法来关闭自动提交,开启事务。

//关闭自动提交,开启事务
conn.setAutoCommit(false);

   一旦事务开始之后,程序可以像平常一样创建Statement对象,创建了Statement对象之后,可以执行任意多条DML语句。

   程序还可以调用Connection提供的getAutoCommit()方法来返回该连接的自动提交模式

   Connection的commit()方法和rollback()方法:

conn.commit();
conn.rollback();

    注意:当Connection遇到一个未处理的SQLException异常时,系统将会非正常退出,事务也会自动回滚。但如果程序捕获了该异常,则需要在异常处理块中显式地回滚事务(手动回滚)

   2》Connection也提供了设置中间点的方法:

       1>Savepoint setSavepoint():在当前事务中创建一个未命名的中间点,并返回代表该中间点的Savepoint对象。

       2>Savepoint setSavepoint(String name):在当前事务中创建一个具有指定名称的中间点,并返回代表该中间点的Savepoint对象。

       根据中间点回滚,并不关心中间点的名字,而是根据中间点对象回滚,Connection的rollback(Savepoint savepoint)方法进行回滚到指定中间点。

MySQL-第十四篇事务管理

标签:save   异常处理   pre   保存   llb   原子性   方法   poi   auto   

人气教程排行