create or replace package pac is procedure pr_test(emp_ID number)isbegin-- some codeif something then insertelse deletecommit;end pr_test;end pac ;@H_404_7@我应该将此交易作为autoNOMOUS_TRANSACTION吗?在程序中放置这样的提交有什么影响?解决方法
@H_404_7@What is the effect of placing the commit like this in program?@H_404_7@Oracle Documentation将COMMIT描述为: @H_404_7@
@H_404_7@Purpose @H_404_7@Use the@H_404_7@如果你有三个PROCEDURE并且每个包含一个COMMIT语句,那么你就不能运行所有三个,如果在后一个中发生异常,则RolLBACK它们全部,因为前两个的变化已经被COMMITted. @H_404_7@作为一般规则,您不应在PROCEDURE或FUNCTION中使用COMMIT,而应将其留给调用者COMMIT事务,以便他们可以将多个 *** 作捆绑在一起. @H_404_7@当然,还有一些用例需要违反此规则,但您应该分别考虑每个案例,并在打破此规则之前花些时间充分了解业务逻辑,以便了解每个实例中的COMMIT. @H_404_7@COMMIT
statement to end your current transaction and make
permanent all changes performed in the transaction. A transaction is a
sequence of sql statements that Oracle Database treats as a single
unit. This statement also erases all savepoints in the transaction and
releases transaction locks.
@H_404_7@Should I make this transaction as autoNOMOUS_TRANSACTION
?
@H_404_7@一个用例是日志记录 – 您可能有一个PROCEDURE调用另一个PROCEDURE来记录用户的 *** 作,无论初始 *** 作是成功还是失败,您都希望保留 *** 作日志并确保日志是COMMITted.在这种情况下,日志记录PROCEDURE应该是一个autoNOMOUS_TRANSACTION并包含一个COMMIT语句,而调用语句应该(可能)都没有. @H_404_7@因此,如果一个PROCEDURE的COMMIT始终是必需的,并且与调用者是否COMMIT其他数据无关,则使PROCEDURE成为autoNOMOUS_TRANSACTION.如果PROCEDUREs可以捆绑在一起然后RolLBACK作为一个组,那么你不想让它们成为autoNOMOUS_TRANSACTIONs. 总结 以上是内存溢出为你收集整理的oracle – 在DML之后放置提交的效果是什么?全部内容,希望文章能够帮你解决oracle – 在DML之后放置提交的效果是什么?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)