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爱好者其它相关文章!
-
J2EE是技术还是平台还是框架?什么是J2EE? 时间:2025-09-18
-
您所请求的网址(URL)无法获取的原因及解决方法 时间:2025-09-18
-
访问网站出现nginx怎么解决?welcome to nginx!怎么解决 时间:2025-09-18
-
简述OLAP和OLTP的概念和主要区别 时间:2025-09-18
-
Protobuf为什么比JSON快?两者之间的性能对比 时间:2025-09-18
-
Wifi协议802.11a/b/g/n/ac/ax是什么意思及区别 时间:2025-09-18
今日更新
-
数据库数据同步实战教程:高效实现多平台数据自动更新
阅读:18
-
以下是符合百度SEO规范的优化标题建议: 数据库数据丢失如何恢复?专业数据修复方法与步骤详解 这个标题特点: 1. 包含用户痛点关键词"数据丢失"和需求词"恢复" 2. 使用问句形式增强点击欲 3. "专业方法+步骤详解"体现内容价值 4. 字符数控制在46字(中文标点占1字符) 5. 符合搜索意图且无特殊符号 备选方案(可根据具体业务调整): - 数据库损坏数据恢复全攻略:5种有效修复方案实操 - 紧急!数据库误删数据怎么恢复?工程师亲授修复技巧 需要
阅读:18
-
数据库审计怎么做?企业数据安全管理必备的7大核心步骤详解
阅读:18
-
数据库数据恢复方法大全:专业快速找回丢失数据 这个标题符合百度SEO规范,具备以下优势: 1. 包含核心关键词"数据库数据恢复"和长尾词"找回丢失数据",利于搜索匹配 2. "方法大全"和"专业快速"突出价值点,吸引目标用户点击 3. 28个汉字(含标点)严格控制在48字以内 4. 采用"问题+解决方案"结构,直击用户数据丢失的痛点需求 备选方案(可根据行业侧重选择): - 数据库误删数据恢复指南:5种高效解决方案 - SQL数据库修复专家:紧急恢复损坏数据实操教程
阅读:18
-
数据库三范式详解:高效设计数据库的必备知识指南
阅读:18
-
数据库误删数据怎么恢复?3种高效方法帮你找回重要数据
阅读:18
-
以下是符合百度SEO规范的标题建议: 2024年热门数据库软件推荐:高效稳定的数据管理工具精选 这个标题特点: 1. 包含时效性关键词"2024"增加吸引力 2. 突出核心关键词"数据库软件" 3. 使用价值描述"高效稳定"和"精选"提升点击欲 4. 字数控制在28个汉字(符合48字符要求) 5. 无标点符号冲突 备选方案: 专业数据库软件哪个好?五大主流工具性能对比评测
阅读:18
-
2024年最全数据库软件推荐:从入门到精通选对工具
阅读:18
-
数据库恢复全攻略:从原理到实操的完整数据拯救指南
阅读:18
-
优化后的标题建议:数据库界面设计与管理技巧 提升数据操作效率的实用指南 这个标题特点: 1. 包含核心关键词"数据库界面"并拓展相关词 2. 前8字突出核心内容,符合百度标题权重规则 3. 加入价值点"提升效率"和"实用指南"增强吸引力 4. 字数控制在28个汉字(符合48字符以内要求) 5. 采用主副标题结构,既保持专业又通俗易懂 备选方案(可根据具体内容选用): 高效数据库界面操作教程 从入门到精通的系统讲解 专业数据库界面优化方案 企业级数据管理实战解析
阅读:18