sql >> データベース >  >> RDS >> Oracle

Oracleプロシージャでセーブポイントを使用する方法

    BEGIN
    
      Savepoint do_update_1;
    
      Update 1;
    
      insert 1;
    
      Update 2;
    
      Update 3; --Suppose exception occurs
    
    EXCEPTION
      WHEN some_exception THEN Rollback To do_update_1;
    END;
    


    ======編集==========

    実例: http://sqlfiddle.com/#! 4 / b94a93 / 1

    create table tttt(
      id int,
      val int
    )
    /
    
    declare 
      x int := 0;
    begin
      insert into tttt values( 1,1);
      insert into tttt values( 2,2);
      Savepoint do_update_1;
    
      insert into tttt values( 3,3);
      update tttt set val = 0 where id = 2;
      update tttt set val = 10 / val where id = 2;
    
    exception
      when zero_divide then rollback to do_update_1;
    end;
    /
    


    1. PostgreSQL:PostgreSQLデータベースのユーザーにすべての権限を付与します

    2. 数列から不変の値の間隔を取得します

    3. PHPでMySQL接続を何度も開くことの意味は何ですか

    4. データベースに接続するために付与されたロールを削除できません