【发布时间】:2012-12-06 05:40:53
【问题描述】:
会尽量简化。我在函数中使用 throw/catch。该函数接受名称、描述和用户数组。它将名称和描述添加到一个表中,然后获取用户数组,并执行一个单独的函数将它们添加到连接器表中。我将功能设置为关闭自动提交,直到输入最后一个用户然后提交。问题是,如果其中一个用户未能进入(由于外键约束),则不会退出事务。我正在调用单独的函数这一事实是否会“重置”自动提交并导致它无法按预期工作?通过将回滚放在 Catch 子句中,我做错了吗?
try
{
autocommit=0
run insert query
if query fails: throw error, rollback
else
for count of array
run another function (this function does more SQL and throws its own errors if it fails)
autocommit=1
}
catch
{
rollback, autocommit=1;
display error
}
希望我没有过度简化代码。任何帮助将不胜感激。
【问题讨论】:
-
更新:通过将其他函数运行的代码移动到主函数中,它可以工作。按照这个逻辑......调用另一个函数会重置自动提交?
标签: php mysql transactions autocommit