网上有人说开启事务后 sql语句执行错误或程序出错 没有执行rollback的情况下,下一次运行就会自动commit
程序出错不会回滚rollback
但是也有人说抛出异常等 程序如果MySQL存在没有提交的事务,那么这时候 AUTOCOMMIT 自动提交的参数应该是为 0 的。
不过如果你通过其他的语言的MySQL驱动来操作的话,这些驱动一般都带有自动恢复 AUTOCOMMIT 的功能,在请求处理完成后会自动 ROLLBACK 没有处理的事务。
网上有人说开启事务后 sql语句执行错误或程序出错 没有执行rollback的情况下,下一次运行就会自动commit
程序出错不会回滚rollback
但是也有人说抛出异常等 程序如果MySQL存在没有提交的事务,那么这时候 AUTOCOMMIT 自动提交的参数应该是为 0 的。
不过如果你通过其他的语言的MySQL驱动来操作的话,这些驱动一般都带有自动恢复 AUTOCOMMIT 的功能,在请求处理完成后会自动 ROLLBACK 没有处理的事务。
这里我默认认为你使用的是PDO吧。
官方文档是这样说的:
立即学习“PHP免费学习笔记(深入)”;
When the script ends or when a connection is about to be closed, if you have an outstanding transaction, PDO will automatically roll it back. This is a safety measure to help avoid inconsistency in the cases where the script terminates unexpectedly--if you didn't explicitly commit the transaction, then it is assumed that something went awry, so the rollback is performed for the safety of your data.When the script ends or when a connection is about to be closed
意思就是说,当脚本结束(包括正常结束或者异常结束).
PDO will automatically roll it back
PDO会自动回滚。
文档已经说的很清楚了。
如果你不是用的PDO驱动,可查看相关驱动文档,或者在问题中说清楚用的什么驱动。
顺便一提,之前的mysql_connect()函数官方已经不建议再使用了(was deprecated)。
PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号