> 데이터 베이스 > MySQL 튜토리얼 > MYSQL入门学习之十五:事务处理的基本操作_MySQL

MYSQL入门学习之十五:事务处理的基本操作_MySQL

WBOY
풀어 주다: 2016-06-01 13:37:39
원래의
807명이 탐색했습니다.

bitsCN.com

MYSQL入门学习之十五:事务处理的基本操作

 

相关链接:

MYSQL入门学习之一:基本操作

http:///database/201212/173868.html

MYSQL入门学习之二:使用正则表达式搜索

http:///database/201212/173869.html

MYSQL入门学习之三:全文本搜索

http:///database/201212/173873.html

MYSQL入门学习之四:MYSQL的数据类型

http:///database/201212/175536.html

MYSQL入门学习之五:MYSQL的字符集

http:///database/201212/175541.html

MYSQL入门学习之六:MYSQL的运算符

http:///database/201212/175862.html

MYSQL入门学习之七:MYSQL常用函数

http:///database/201212/175864.html

MYSQL入门学习之八:数据库及表的基本操作

http:///database/201212/175867.html

MYSQL入门学习之九:索引的简单操作

http:///database/201212/176772.html

MYSQL入门学习之十:视图的基本操作

http:///database/201212/176775.html

MYSQL入门学习之十一:触发器的基本操作

http:///database/201212/176781.html

MYSQL入门学习之十二:存储过程的基本操作

http:///database/201212/177380.html

MYSQL入门学习之十三:自定义函数的基本操作

http:///database/201212/177382.html

MYSQL入门学习之十四:游标的基本操作

http:///database/201212/177384.html

 

  事务处理(transaction processing)可以用来维护数据库的完整性,它保证成批的MySQL操作要么完全执行,要么完全不执行。    

        但是并非所有的数据库引擎都支持事务处理。MyISAM和InnoDB是两种最常使用的引擎。前者不支持明确的事务处理管理,而后者支持。

一、几个事务处理相关的术语

        事务(transaction)指一组SQL语句;

        回退(rollback)指撤销指定SQL语句的过程;

        提交(commit)指将未存储的SQL语句结果写入数据库表;

        保留点(savepoint)指事务处理中设置的临时占位符(placeholder),可以对它发布回退(与回退整个事务处理不同)。

 

二、控制事务处理

        管理事务处理的关键在于将SQL语句组分解为逻辑块,并明确规定数据何时应该回退,何时不应该回退。

1、开始事务

        START TRANSACTION;

        使用如上语句标识事务的开始;

2、使用ROLLBACK

        ROLLBACK命令用来回退(撤销)MySQL语句:

        下面的示例操作,首先开始一个事务,然后删除了表test_inn中的所有内容,并查看表中的内容,显示表已被清空。但执行ROLLBACK回退事务后,重新查询表中的数据。表中的数据依然还在:

[sql] 

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 |  

+----------+----------------------------  

        注意:上例中表test_inn使用的是InnoDB引擎,若一个使用MyISAM引擎的表执行如上操作,则即使ROLLBACK后,可以发现,数据仍然被实实在在的清空。

3、使用COMMIT

        一般的MySQL语句都是隐含提交(implicit commit)的,即提交(写或保存)操作是自动进行的。

        但是,在事务处理块中,提交不会隐含进行。为进行明确的提交,需要使用COMMIT语句。

        示例:

[sql] 

mysql> start transaction;  

mysql> delete from test_inn;  

mysql> commit;  

        当COMMIT或ROLLBACK语句执行后,启动的事务会自动关闭。
 

4、使用保留点

        为了支持回退部分事务处理,必须在事务处理块中合适的位置放置保留点。

        创建保留点:SAVEPOINT sap_name;

        回退至保留点:ROLLBACK TO sap_name;

        释放保留点:RELEASE sp_name;

        保留点也可以在事务处理完成(执行一条ROLLBACK或COMMIT)后自动释放。

5、更改默认的提交行为

        SET autocommit=0;

        autocommit标志是针对每个连接而不是服务器的。

参考:《MySQL必知必会》
 

bitsCN.com
관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿