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

  • 内容
  • 评论
  • 相关

mysql入门学习之十五:事务处理的基本操作
        事务处理(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 |         +----------+----------------------------

欢迎大家阅读《MYSQL入门学习之十五:事宜处理的基本操作》,跪求各位点评,by 搞代码

        注意:上例中表test_inn使用的是InnoDB引擎,若一个使用MyISAM引擎的表执行如上操作,则即使ROLLBACK后,可以发现,数据仍然被实实在在的清空。
3、使用COMMIT
        一般的MySQL语句都是隐含提交(implicit commit)的,即提交(写或保存)操作是自动进行的。
        但是,在事务处理块中,提交不会隐含进行。为进行明确的提交,需要使用COMMIT语句。
        示例:

        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必知必会》

原创文章,转载请注明: 转载自搞代码

本文链接地址: MYSQL入门学习之十五:事宜处理的基本操作

微信支付二维码

微信 赏一包辣条吧~

支付宝支付二维码

支付宝 赏一听可乐吧~

评论

0条评论

发表评论

电子邮件地址不会被公开。 必填项已用*标注