MySQL学习之事务控制
时间:2021-04-07
来源:互联网
标签:

什么是事务控制
事务是指作为一个逻辑工作单元执行的一系列操作,这些操作要么全部成功,要么全部失败。事务确保了多个数据的修改作为一个单元来处理。
在MySQL中,只有使用了Innodb存储引擎的数据库或表才支持事物
事务用于维护数据库的完整性,保证成批的sql语句要么都执行,要么都不执行
事务用于管理INSERT、UPDATE和DELETE语句
假如,张三在ATM机上给李四转账100元,在银行的业务系统中,主要会执行两步数据变更操作:
从张三的账户减去100元
给李四的账户增加100元
试问,如果操作1执行成功,操作2执行失败会发生什么?
事务的四个特性
如果某个数据库支持事务,那么该数据库必须具备ACID四个特性,即Atomicity(原子性)、Consistency(一致性)、Isolation(隔离性)、Durability(持久性)。
原子性:事务必须是原子工作单元,事务中包含的各操作要么都做,要么都不做
一致性:事务在执行完成时,必须使所有的数据都保持一致状态
隔离性:事务独立运行。多个事务之间相互隔离,互不干扰。事务的100%隔离,会牺牲速度
持续性:事务执行完成之后,它对系统的影响是永久性的
MySQL的事务控制
在默认情况下,MySQL是自动提交事务的,即每一条INSERT、UPDATE、DELETE的SQL语句提交后会立即执行COMMIT操作。因此,要开启一个事务,可以使用start transaction或begin,或者将autocommit的值设置为0.
方法一:

方法二:

例子
登陆数据库,使用student数据库并查看所有的数据表
USE student;SHOW TABLES;

2. 创建bank_account数据表并插入两条记录,设置张三的balance字段值+1000
CREATE TABLE bank_account(
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(30) COMMENT '姓名',
balance DECIMAL(18, 2) COMMENT '账户余额');INSERT INTO bank_account(id, name, balance) VALUE(1, '张三', 0);INSERT INTO bank_account(id, name, balance) VALUE(2, '李四', 0);UPDATE bank_account SET balance = balance + 1000 WHERE id = 1;

3. 查看默认的autocommit值
SELECT @@autocommit;

4. 查看bank_account数据表所有记录
SELECT * FROM bank_account;

5. 开始事务控制并执行两条SQL语句
START TRANSACTION;UPDATE bank_account SET balance = balance - 100 WHERE id = 1;UPDATE bank_account SET balance = balance + 100 WHERE id = 2;COMMIT;

6. 查看此时数据表的内容
SELECT * FROM bank_account;

7. 再次开始事务控制,同样插入两条一样的SQL语句,但将commit(提交)变为rollback(回滚)
START TRANSACTION;UPDATE bank_account SET balance = balance - 100 WHERE id = 1;UPDATE bank_account SET balance = balance + 100 WHERE id = 2;ROLLBACK;

8. 再次查看数据表内容,发现回滚之后数据无变化
SELECT * FROM bank_account;

注:本文是博主MySQL学习的总结,不支持任何商用,转载请注明出处!如果你也对MySQL学习有一定的兴趣和理解,欢迎随时找博主交流~
以上就是MySQL学习之事务控制的详细内容,更多请关注php爱好者其它相关文章!
-
axios在vue中的使用详解 axios和ajax的区别 时间:2026-01-05 -
如何在Jenkins中配置自动化打包和部署? 时间:2026-01-05 -
VirtualBox超详细下载、安装、卸载、使用教程 时间:2026-01-05 -
FLash插件是干什么用的?FLash插件怎么安装? 时间:2026-01-05 -
HBuilder超详细下载、安装、使用教程 时间:2026-01-05 -
Anaconda是干嘛用的?Anaconda超详细下载、安装教程 时间:2026-01-05
今日更新
-
古墓丽影9手游公测时间 古墓丽影9手游上线日期及测试安排
阅读:18
-
逆战未来纯白插件搭配指南 逆战未来高性价比纯白插件组合推荐
阅读:18
-
神召大陆战神殿闯关玩法全攻略 神召大陆战神殿高效通关技巧与阵容搭配指南
阅读:18
-
四六级报名官网入口-四六级报名官网入口
阅读:18
-
鸣潮嘉贝莉娜角色怎么样
阅读:18
-
《星露谷物语》作物栽培技巧分享
阅读:18
-
明末渊虚之羽骨哨如何获取
阅读:18
-
我勒个逗嬛嬛救孩子怎么通关?
阅读:18
-
如何获取无限暖暖中的白丝袜?
阅读:18
-
空洞骑士 丝之歌深邃巢穴幼虫收集
阅读:18










