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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值