zoukankan      html  css  js  c++  java
  • PRAGMA AUTONOMOUS_TRANSACTION

    数据库事务是一种单元操作,要么是全部操作都成功,要么全部失败。在Oracle中,一个事务是从执行第一个数据管理语言(DML)语句开始,直到执行一个COMMIT语句,提交保存这个事务,或者执行一个ROLLBACK语句,放弃此次操作结束。

    针对这种困境,Oracle提 供了一种便捷的方法,即自治事务。自治事务从当前事务开始,在其自身的语境中执行。它们能独立地被提交或重新运行,而不影响正在运行的事务。正因为这样, 它们成了编写错误日志表格的理想形式。在事务中检测到错误时,您可以在错误日志表格中插入一行并提交它,然后在不丢失这次插入的情况下回滚主事务。

    因为自治事务是与主事务相分离的,所以它不能检测到被修改过的行的当前状态。这就好像在主事务提交之前,它们一直处于单独的会话里,对自治事务来说,它们是不可用的。然而,反过来情况就不同了:主事务能够检测到已经执行过的自治事务的结果。

    PRAGMA AUTONOMOUS_TRANSACTION 自治事务 不受别的事务的影响

    1 CREATE OR REPLACE FUNCTION FUNC_CREATE_DEMO RETURN NUMBER IS
    2   LINK_ID NUMBER;
    3   PRAGMA AUTONOMOUS_TRANSACTION;
    4 BEGIN
    5   --LINK_ID RES_SPEC_ID OPR_STATE_ID
    6   --do something  insert update delete
    7   COMMIT;
    8   RETURN LINK_ID;
    9 END;
    View Code
  • 相关阅读:
    bash 学习笔记5
    zookeeper启动脚本修改
    java enmu 使用说明
    bash 学习笔记4
    zookeep集群搭建说明
    bash 学习笔记3
    集群配置问题
    hadoop hdfs 总结(1)
    bash 学习笔记6
    bash pitfall
  • 原文地址:https://www.cnblogs.com/binarysheep/p/4193013.html
Copyright © 2011-2022 走看看