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

postgresql 8.2のネストされたトランザクション?

    SavePointsを使用してpostgresql内でネストされたトランザクションを使用する可能性があります。

    このコード例を見てください:

    CREATE TABLE t1 (a integer PRIMARY KEY);
    
    CREATE FUNCTION test_exception() RETURNS boolean LANGUAGE plpgsql AS
    $$BEGIN
       INSERT INTO t1 (a) VALUES (1);
       INSERT INTO t1 (a) VALUES (2);
       INSERT INTO t1 (a) VALUES (1);
       INSERT INTO t1 (a) VALUES (3);
       RETURN TRUE;
    EXCEPTION
       WHEN integrity_constraint_violation THEN
          RAISE NOTICE 'Rollback to savepoint';
          RETURN FALSE;
    END;$$;
    
    BEGIN;
    
    SELECT test_exception();
    NOTICE:  Rollback to savepoint
     test_exception 
    ----------------
     f
    (1 row)
    
    COMMIT;
    
    SELECT count(*) FROM t1;
     count 
    -------
         0
    (1 row)
    

    多分これはあなたを少し助けるでしょう。



    1. PostgreSQLは部分インデックスを使用しません

    2. RODBCを使用してRをPostgreSQLに接続しようとしたときにエラーが発生しました

    3. ビッグデータをPostgreSQLからAWSs3にエクスポートする

    4. SQLAlchemyを介したPython3とmysql