PHP中的单个操作必须经过以下步骤:
基于大量的业务逻辑,从PHP PDO中执行一些mysql语句。
执行存储过程。
从PDO执行更多MySQL语句。
整个过程需要是一个单独的事务。如果MySQL存储过程中发生任何错误,则必须回滚整个事务。(存储过程具有创建临时表、执行基于光标的扫描和执行插入的查询。)即使在存储过程之后PDO中发生错误,也必须完全回滚事务,包括存储过程中发生的任何更改。
基于PDO的查询是在很久以前编程的。存储过程是根据客户机的新需求而新引入的。
在PHP中,事务在步骤1开始时启动。在步骤3的末尾有一个提交。最后有一个catch块,导致回滚。
应该在存储过程中启动事务吗?如果是,如何在出错时完全回滚?还是应该在存储过程中将auto commit手动设置为false?或者,是否有其他方法通知MySQL这个存储过程已经是事务的一部分。
如果不是,原子性是否保证了整个行动?
最佳答案
这是莫希普引用的链接:http://dev.mysql.com/doc/refman/5.6/en/begin-end.html
事务不是在存储过程中自动运行的,需要通过“启动事务”来触发它,我正要问这个问题。谢谢你的报价。