MySQL必知必会 学习笔记 第二十六章 管理事务处理

并非所有引擎都支持事务处理。MyISAM不支持,InnoDB支持。

事务处理可用来维护数据库的完整性,它保证成批的MySQL操作要么完全执行,要么完全不执行。如果没有错误发生,整组语句写到数据库表,如果发生错误,将已经执行的部分语句进行回退,以恢复数据库到某个已知且安全的状态。

术语:
1.事务:一组SQL语句。
2.回退:撤销指定SQL语句。
3.提交:将未存储的SQL语句结果写入数据库表。
4.保留点:指事务处理中设置的临时占位符,可以回退到该点。

标识事务的开始:

START TRANSACTION;

回退MySQL语句:

SELECT语句;    -- 查看结果集
START TRANSACTION;
DELETE语句;
SELECT语句;    -- 会发现指定行被删除
ROLLBACK;    -- 回退删除语句
SELECT语句;    -- 删除行又回来了

ROLLBACK只能在一个事务处理内使用。

可以ROLLBACK的语句有INSERT、UPDATE、DELETE。在事务处理块中可以使用CREATE和DROP语句,但执行回退时它们不会被撤销。

一般MySQL语句是直接隐含提交的,在事务处理中,需要显式提交:

START TRANSACTION;
DELETE语句1;
DELETE语句2;
COMMIT;

以上当DELETE语句2失败时,整个事务会被撤销。

COMMIT或ROLLBACK后,事务会自动关闭。

有些事务如果发生了错误,不需要全部回退,可在事务处理块中某一位置放置占位符,如果需要回退,可以回退到某个占位符。

创建占位符:

SAVEPOINT savePointName;

每个保留点都有标识它的唯一的占位符名字,回退到某个保留点:

ROLLBACK TO savePointName

可设置任意多的保留点。

保留点在事务处理完成后自动释放,MySQL 5及以后版本可以用RELEASE SAVEPOINT显式释放保留点。

将MySQL默认的自动提交改为手动提交:

SET autocommit = 0;

aotucommit标志针对每个连接而非服务器。

posted @   epiphanyy  阅读(9)  评论(0编辑  收藏  举报  
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
历史上的今天:
2019-12-26 C++ Primer 学习笔记 第一章 开始
点击右上角即可分享
微信分享提示