MYSQL入门学习之十五:事务处理的基本操作
来源:互联网 发布:传奇数据库编辑器 wzl 编辑:程序博客网 时间:2024/06/04 18:30
事务处理(transaction processing)可以用来维护数据库的完整性,它保证成批的MySQL操作要么完全执行,要么完全不执行。但是并非所有的数据库引擎都支持事务处理。MyISAM和InnoDB是两种最常使用的引擎。前者不支持明确的事务处理管理,而后者支持。
一、几个事务处理相关的术语
事务(transaction)指一组SQL语句;
回退(rollback)指撤销指定SQL语句的过程;
提交(commit)指将未存储的SQL语句结果写入数据库表;
保留点(savepoint)指事务处理中设置的临时占位符(placeholder),可以对它发布回退(与回退整个事务处理不同)。
二、控制事务处理
管理事务处理的关键在于将SQL语句组分解为逻辑块,并明确规定数据何时应该回退,何时不应该回退。
1、开始事务
START TRANSACTION;
使用如上语句标识事务的开始;
2、使用ROLLBACK
ROLLBACK命令用来回退(撤销)MySQL语句:
下面的示例操作,首先开始一个事务,然后删除了表test_inn中的所有内容,并查看表中的内容,显示表已被清空。但执行ROLLBACK回退事务后,重新查询表中的数据。表中的数据依然还在:
- mysql> start transaction;
- mysql> delete from test_inn;
- mysql> select * from test_inn;
- Empty set (0.00 sec)
- mysql> rollback;
- mysql> select * from test_inn;
- +------+------------+
- | id | birthday |
- +------+------------+
- | 1 | 2012-12-12 |
- | 1 | 0000-00-00 |
- | 1 | 2012-12-00 |
- | 1 | 0000-00-00 |
- +------+------------+
- mysql> show create table test_inn;
- +----------+----------------------------
- | Table | Create Table
- +----------+----------------------------
- | test_inn | CREATE TABLE `test_inn` (
- `id` int(11) DEFAULT NULL,
- `birthday` date DEFAULT NULL
- ) ENGINE=InnoDB DEFAULT CHARSET=latin1 |
- +----------+----------------------------
3、使用COMMIT
一般的MySQL语句都是隐含提交(implicit commit)的,即提交(写或保存)操作是自动进行的。
但是,在事务处理块中,提交不会隐含进行。为进行明确的提交,需要使用COMMIT语句。
示例:
- mysql> start transaction;
- mysql> delete from test_inn;
- mysql> commit;
4、使用保留点
为了支持回退部分事务处理,必须在事务处理块中合适的位置放置保留点。
创建保留点:SAVEPOINT sap_name;
回退至保留点:ROLLBACK TO sap_name;
释放保留点:RELEASE sp_name;
保留点也可以在事务处理完成(执行一条ROLLBACK或COMMIT)后自动释放。
5、更改默认的提交行为
SET autocommit=0;
autocommit标志是针对每个连接而不是服务器的。
0 0
- MYSQL入门学习之十五:事务处理的基本操作
- MYSQL入门学习之十五:事务处理的基本操作
- MYSQL入门学习之十:视图的基本操作
- MYSQL入门学习之十一:触发器的基本操作
- MYSQL入门学习之十二:存储过程的基本操作
- MYSQL入门学习之十三:自定义函数的基本操作
- MYSQL入门学习之十四:游标的基本操作
- MYSQL入门学习之九:索引的基本操作
- MYSQL入门学习之十:视图的基本操作
- MYSQL入门学习之十一:触发器的基本操作
- MYSQL入门学习之十二:存储过程的基本操作
- MYSQL入门学习之十三:自定义函数的基本操作
- MYSQL入门学习之十四:游标的基本操作
- mysql学习之事务处理
- Mysql基本命令之事务处理
- MYSQL入门学习之八:数据库及表的基本操作
- MYSQL入门学习之八:数据库及表的基本操作
- Mysql学习之基本操作
- JSP的基本语法
- 核团有价值么?
- python 操作word ecel
- 开源企业IM-免费企业即时通讯-ENTBOOST 0.8 Windows版本发布
- 核团的具体表现?
- MYSQL入门学习之十五:事务处理的基本操作
- 单元测试
- 关于less的那些事儿
- 为爱奔跑
- Jquery—Jquery中的(function($){...})(jQuery)
- zz消息中间件规范JMS 2.0的十大改进
- 3Sum Closest
- 去甲肾上腺素是什么?
- can't declare an object without including class header file in MFC vc6