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标志针对每个连接而非服务器。

猜你喜欢

转载自blog.csdn.net/tus00000/article/details/111713884