MySQL——管理实务处理

版权声明:最终解释权归属Hern所有,恒! https://blog.csdn.net/qq_36761831/article/details/83855508

注意:并非所有的MySQL数据库引擎都支持事务处理,MyISAM引擎不支持明确的事务处理管理,InnoDB引擎支持事务处理管理,如果应用中需要事务处理功能,一定要选用正确的引擎。

事务处理

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

一般来说,事务是必须满足4个条件: Atomicity(原子性)、Consistency(稳定性)、Isolation(隔离性)、Durability(可靠性)

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

事务处理中经常用到的几个术语:

1、事务:指一组SQL语句。

2、回退:指撤销指定SQL语句的过程。

3、提交:指将未存储的SQL语句结果写入数据库表。

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

标识事务的开始

START TRANSACTION;

ROLLBACK 回退、撤销操作

ROLLBACK命令用来回退、撤销MySQL语句。ROLLBACK语句只能在一个事务处理中使用,即在执行一条START TRANSACTION语句到ROLLBACK语句之间的所有SQL语句。事务处理用来管理INSERT、UPDATE、DELETE语句。

注意:不能回退SELECT 语句(因为回退SELECT语句也没有什么实际意义),同时也不能回退CREATE、DROP操作(事务处理块中可以使用CREATE、DROP操作,但如果执行回退,它们不会被撤销)。

语法:

START TRANSACTION;//事务的开始

DELETE、UPDATE、INSERT语句;

ROLLBACK;//事务回滚

COMMIT提交操作

隐含提交:一般的MySQL语句都是直接针对数据库表执行和编写的,这就是隐含提交,即提交(写或保存)操作是自动进行的。

在事务处理块中,提交不会隐含地进行,为进行明确的提交,必须使用COMMIT语句。

注意:当COMMIT或ROLLBACK语句执行后,事务会自动关闭(将来的更改会隐含提交)。

语法:

COMMIT;

例如:

SELECT * FROM city;

START TRANSACTION;//事务开始

DELETE FROM WHERE id = 1001;

COMMIT;//提交事务操作

使用保留点

创建保留点使用SAVEPOINT语句,每个保留点都必须是标识它的唯一名字,以便在回退时MySQL知道要回退到何处,语法:

SAVEPOINT 保留点名称;

回退保留点使用ROLLBACK TO语句,在使用回退保留点语句时必须指明它的保留点名称,否则无法回退,语法:

ROLLBACK TO 保留点名称;

注意:保留点在事务处理完成后会自动释放(执行一条ROLLBACK或COMMIT语句后会自动释放),从MySQL5开始,也可以明确的释放保留点,语法:

RELEASE SAVEPOINT 保留点名称;

建议:个人认为保留点越多越好,这样可以按照自己的意愿灵活的进行回退。

更改默认的提交行为

MySQL默认的是自动提交所有更改,大部分情况下执行一条MySQL语句时该语句实际上都是针对表执行的,而且所做的更改立即生效。

可以指示MySQL不自动提交更改,语句:

SET autocommit = 0;

设置值为 0(假) 表示MySQL不自动提交更改
设置值为 1(真) 表示MySQL自动提交更改

autocommit标志决定是否自动提交更改,不管有没有COMMIT语句。

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

猜你喜欢

转载自blog.csdn.net/qq_36761831/article/details/83855508