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
  • 相关阅读:
    Zabbix通过进程名监控进程状态配置详解
    kibana 统计field所有值百分比
    使用Logstash filter grok过滤日志文件
    python 修改文件内容
    清理elasticsearch的索引
    zabbix3.2.1安装graphtrees插件
    snmpwalk用法
    Zabbix通过SNMPv2监控DELL服务器的硬件信息
    zabbix上的宏(macro)介绍
    解决TeamViewer无法按给定网络地址联系伙伴
  • 原文地址:https://www.cnblogs.com/binarysheep/p/4193013.html
Copyright © 2011-2022 走看看