MySQL事务处理二

2022-03-18  本文已影响0人  吱吱_呀

SELECT @@AUTOCOMMIT;    查看MySQL是否自动提交事务  0表示手动提交事务    1表示自动提交事务

SET AUTOCOMMIT = 0;    设置事务提交方式

SELECT  @@TRANCTION_ISOLATION;查询事务的隔离级别

SELECT  @@GLOBAL.TRANCTION_ISOLATION;查询全局事务的隔离级别

默认为可重复读

修改事务隔离级别语句

SET  [ SESSION | GLOBAL ]   TRANSACTION ISOLATION  LEVEL 隔离级别;

隔离级别{    REPEATABLE READ 

                |   READ COMMITTED

                |   READ UNCOMMITTED

                |   SERIALIZABLE }

MySQL数据库的事务隔离级别分为会话和全局两个范围

如果选择global,意思是此语句将应用于之后的所有session,而当前已经存在的session不受影响。

如果选择session,意思是此语句将应用于当前session内之后的所有事务。

如果什么都不写,意思是此语句将应用于当前session内的下一个还未开始的事务。


控制事务处理

MySQL使用下面语句标识事务的开始

START  TRANSACTION;

使用ROLLBACK

ROLLBACK只能在一个事务处理内使用(在执行一条START TRANSACTION命令之后)

事务处理用来管理INSERT、UPDATE和DELETE语句。你不能回退SELECT语句。(这样做也没有什么意义。)你不能回退CREATE或DROP操作。事务处理块中可以使用这两条语句,但如果你执行回退,它们不会被撤销。

使用COMMIT

一般的MySQL语句都是直接针对数据库表执行和编写的。这就是所谓的隐含提交,即提交操作是自动进行的。

但是在事务处理块中,提交不会隐含地进行。为进行明确的提交,使用commit语句。

这个例子中,从系统中完全删除订单20011.因为涉及更新两个数据库表,所以使用事务处理块来保证订单不被部分删除。最后的Commit语句仅在不出错时写出更改。如果第一条delete起作用,但第二条失败,则delete不会提交(实际上,它是被自动撤销的)

使用保留点

复杂的事务可能需要部分提交或回退,就需要设置保留点。这样,如果需要回退,可以回退到某个保留点SAVEPOINT

Savapoint  标识名;

每个保留点逗趣唯一标识的名字,以便在退回时知道回退到何处

Rollback to 标识名;

保留点在事务处理完成(执行一条rollback或commit)后自动释放。也可以用

RELEASE SAVEPOINT  标识名; 明确释放保留点

上一篇 下一篇

猜你喜欢

热点阅读