mysql需要commit吗

文 / @WordPress主题

MySQL需要commit吗?

这是一个常见的问题,答案是需要看你的存储引擎。如果使用的是不支持事务的引擎,比如MyISAM,则commit是无效的,因为它无法支持事务。而如果使用支持事务的引擎,比如InnoDB,则需要知道事务是否支持自动提交。如果是自动提交的话,那么就不需要手动执行commit操作了。

登录MySQL后,可以使用"SHOW VARIABLES LIKE '%autocommit%';"来查看数据库是否是自动提交。如果返回结果是"OFF",表示需要手动执行commit命令。在命令行中,执行commit命令的语法是"commit;"。

值得一提的是,提交数据有三种类型:显式提交、隐式提交及自动提交。显式提交是使用COMMIT命令直接完成的,而隐式提交是使用SQL命令间接完成的。而自动提交是在将AUTOCOMMIT设置为ON后,插入、修改、删除语句执行后,系统将自动进行提交。

需要注意的是,commit和rollback两个命令都是用在执行DML语句(INSERT/DELETE/UPDATE/SELECT)之后的。执行完DML语句之后,处理的数据都会被放在回滚段中,等待用户进行提交或者回滚。而所有的DML语句都需要显式提交,也就是说,要在执行完DML语句之后,执行commit命令。而其他的DDL语句则是隐式提交的,比如CREATE TABLE等命令。在执行完这些命令后,数据库已经进行了隐式提交,因此不需要再进行显式提交。

总而言之,当使用支持事务的引擎时,需要查看数据库是否是自动提交,以决定是否需要手动执行commit命令。在执行DML语句后,务必要记得显式提交数据。如果不确定是否需要手动执行commit,可以使用以上提到的命令来查看数据库的状态。

添加UTHEME为好友
扫码添加UTHEME微信为好友
· 分享WordPress相关技术文章,主题上新与优惠动态早知道。
· 微信端最大WordPress社群,限时免费入群。