我应该在哪里提交交易 - 在存储过程中还是在调用应用程序代码中?

aw *_*rud 5 php oracle stored-procedures transactions

我正在使用PHP + Oracle,并且想知道是否有关于在哪里提交我的交易的建议.我调用存储过程来执行所有插入/更新/删除操作,并且当前正在我的存储过程结束时提交.

我在想:

  1. 基于存储过程调用是否成功,在我的存储过程中调用commit/rollback与在我的PHP代码中调用oci_commit/oci_rollback之间有什么区别.

  2. 哪个更好?最初我在思考存储过程本身,但现在我想知道,如果没有区别,也许它会给我更多的灵活性来提交调用应用程序代码,因为我可以在一个事务中调用几个存储过程而不是每次我想在单个事务中混合/匹配各种SQL语句时编写新的存储过程.

思考?

Ton*_*ews 7

由于你给出的理由,我绝对同意备选方案2.让每个存储过程充当单独的事务有时可能过于局限.Tom Kyte也会支持选项2:例如,请看这个AskTom线程.