• PL/SQL block中异常对事物的影响


    /*
    ===========================================================================
    ================pl/sql block中exception对transaction的影响=================
        没有excepion block的pl/sql中,所有sql语句保持一个原子性,如果发生异常,就
    整个roll back(异常一直向外抛出,直到终端)
        如果增加了excepion捕获,就仅roll back发生异常的sql
    ===========================================================================
    */
    DROP TABLE t PURGE;

    CREATE TABLE t (x INT CHECK (x>0));

    --没有异常捕获,所以整个roll back
    DECLARE
    BEGIN
      INSERT INTO t(x) VALUES(1);
      INSERT INTO t(x) VALUES(-1);
      COMMIT;
    END;
    /

    --增加异常捕获之后(在异常处理中commit),前面的sql被提交
    DECLARE
    BEGIN
      INSERT INTO t (x) VALUES (1);
      INSERT INTO t (x) VALUES (-1);
      COMMIT;
    EXCEPTION
      WHEN OTHERS THEN
        COMMIT;
    END;
    /

    作者:wait4friend
    Weibo:@wait4friend
    Twitter:@wait4friend
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
  • 相关阅读:
    Mybatis分页插件
    Mybatis代码自动生成
    Spring-Mybatis依赖
    Spring-test单元测试
    Spring-json依赖
    Spring-MVC依赖
    Log4j日志依赖
    Spring数据库连接池依赖
    Spring-JDBC依赖
    Spring依赖
  • 原文地址:https://www.cnblogs.com/wait4friend/p/2345504.html
Copyright © 2020-2023  润新知