加入收藏 | 设为首页 | 会员中心 | 我要投稿 晋中站长网 (https://www.0354zz.com/)- 科技、容器安全、数据加密、云日志、云数据迁移!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

mysql事务控制

发布时间:2023-03-01 13:31:04 所属栏目:MySql教程 来源:未知
导读: 一、事务控制是什么
?事务(Transaction)是指作为一个逻辑工作单元执行的一系列操作,这些操作要么全部成功MySQL 执行事务,要么 全部失败。事务确保对多个数据的修改作为一个单元来处理。

一、事务控制是什么

?事务(Transaction)是指作为一个逻辑工作单元执行的一系列操作,这些操作要么全部成功MySQL 执行事务,要么 全部失败。事务确保对多个数据的修改作为一个单元来处理。

? 在MySQL中,只有使用了Innodb存储引擎的数据库或表才支持事务。

? 事务用于维护数据库的完整性,保证成批的sql语句要么都执行,要么都不执行。

? 事务用于管理INSERT、UPDATE和DELETE语句。

例如,我在ATM机上给小王转账100元,在银行的业务系统中,主要会执行两步数据变更操作: ①从我的账户减去100元; ②给小王的账户增加100元。这里:如果操作①执行成功,操作②执行失败会发生什么情况?-----还是会失败!

二、事务的特性

? 若数据库声称支持事务,那么该数据库必须具备ACID四个特性,即Atomicity(原子性)、 Consistency(一致性)、Isolation(隔离性)和Durability(持久性)。

三、事务控制

? 默认情况下,MySQL是自动提交事务的,即每一条INSERT、UPDATE、DELETE的SQL语句提交 后会立即执行COMMIT操作。因此,要开启一个事务,可以使用start transaction或begin,或者 将autocommit的值设置为0。

MYSQL 事务处理主要有两种方法

1、用 begin, rollback, commit来实现

begin或/start transaction)开始一个事务

rollback事务回滚

commit事务确认

2、直接用 SET 来改变 MySQL 的自动提交模式:

set autocommit=0禁止自动提交

set autocommit=1 开启自动提交

重要说明:

1.不管autocommit是1还是0

start transaction后,只有当commit数据才会生效,rollback后就会回滚。

2、当autocommit为 0 时

不管有没有 start transaction.

只有当commit数据才会生效,rollback后就会回滚。

3、如果autocommit为1 ,并且没有 start transaction.

调用rollback是没有用的。因为事务已经自动提交了。这个最需要注意了,因为在python和mysql中都是默认autocommit是1

其他事务命令

flag相当于定义这个保存点的名字

savepoint flag:savepoint允许在事务中创建一个保存点,一个事务中可以有多个savepoint ;

release savepoint flag:删除一个事务的保存点,当没有指定的保存点时,执行该语句会抛出一个异常;

rollback to flag:把事务回滚到标记点;

set transaction:用来设置事务的隔离级别。

(编辑:晋中站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!