本文主要是介绍ARTS Share4 mysql中autocommit,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
MySQL
中的事务(自动提交,显示和隐式),在MySQL
中事务控制数据操作语句以确保它们是原子的。什么叫做原子的,也就是说这个事务要么成功,要么失败。
什么时候算事务成功或者失败?
当向数据库事务发送commit
命令的时候,说明事务提交成功;相反,如果向数据库事务发送rollback
命令,那么就说明此次的事务提交失败,所有执行过的SQL
,数据会进行回滚到最初的状态。
当对数据库数据进行修改的时候,此时是需要使用COMMIT
。而ROLLBACK
忽略了事务中发生的任何操作,这些操作指当UPDATE / DELETE
语句无意中对数据进行错误修改。
在我们经常使用的DML(INSERT/UPDATE/DELETE)
操作中,这些语句的事务都是自动提交的,而且当这些语句成功执行完以后,事务就会立马提交。这种情况下就没有办法进行ROLLBACK
。当然如果在这个过程中出现其他误操作,那么数据只能从备份中进行恢复。在MySQL
中,InnoDB
中的autocommit
是默认为on
,MyISAM
是不支持事务的,但是它可以通过使用set autocommit=0
达到相同的效果。
一个显式事务的语句在MySQL
中都是以start transaction
开始的,都是以commit
或者rollback
结束这个事务的。
隐式事务与显式事务略有不同,隐式事务不需要明确定义一个事务,也不像显式事务一样需要使用commit
或者rollback
来结束这个事务。
显式事务是最理想的解决方案,它们需要使用COMMIT
或ROLLBACK
来完成事务,并且如果有需要,其他人可以清楚地说明正在发生的事情。 如果以交互方式使用数据库,则隐式事务是正常的,但只有在测试结果并彻底确定有效后才应指定COMMIT语句。
意思就是你应该这样使用:
SET AUTOCOMMIT = 0;START TRANSACTION;UPDATE....;
只有当结果是正确的时候你才可以使用COMMIT
来提交事务;否则你就必须使用ROLLBACK
来进行回滚操作。也就是说,UPDATE
和DELETE
语句通常只返回受影响的行数,而不是特定的详细信息。 在尝试UPDATE / DELETE
语句之前,将这些语句转换为SELECT
语句并查看结果以确保正确性.
DDL(数据定义语言)语句是自动提交的 - 它们不需要COMMIT语句。比如:表,索引,存储过程,数据库和视图创建或更改语句.
总结:
- 在
MySQL
中autocommit
是默认开启的, set autocommit=0
表示显式开启一个事务,需要使用start transaction
,然后必须对这个事务成功时进行commit
,失败的时候进行rollback
;set autocommit=1
表示隐式的开启一个事务,如果进行误操作对数据进行删除或者修改,那么只能从备份中进行数据恢复。
ps:如果有不正确的地方,还希望纠正,以后会补充相关内容,对于MySQL
数据库的事务做详细了解。
这篇关于ARTS Share4 mysql中autocommit的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!