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

postgreql関数の実行中にトランザクションをコミットする

    これは、dblinkを使用して実行できます。 1つの挿入がコミットされている例を示しました。whileループロジックを追加し、すべてのループをコミットする必要があります。 http://www.postgresql.org/docs/9.3/static/contrib-dblink-connect.html

    CREATE OR REPLACE FUNCTION log_the_dancing(ip_dance_entry text)
    RETURNS INT AS
    $BODY$
        DECLARE
        BEGIN
            PERFORM dblink_connect('dblink_trans','dbname=sandbox port=5433 user=postgres');
            PERFORM dblink('dblink_trans','INSERT INTO dance_log(dance_entry) SELECT ' || '''' || ip_dance_entry || '''');
            PERFORM dblink('dblink_trans','COMMIT;');
            PERFORM dblink_disconnect('dblink_trans'); 
    
            RETURN 0;
        END;
    $BODY$
      LANGUAGE plpgsql VOLATILE
      COST 100;
    
    ALTER FUNCTION log_the_dancing(ip_dance_entry text)
      OWNER TO postgres;
    
    BEGIN TRANSACTION;
      select log_the_dancing('The Flamingo');
      select log_the_dancing('Break Dance');
      select log_the_dancing('Cha Cha');
    ROLLBACK TRANSACTION;
    
    --Show records committed even though we rolled back outer transaction
    select *
    from dance_log;
    


    1. 接続されているユーザーをOracleデータベースにドロップする

    2. psycopg2を使用してpostgresテーブルにデータをインポートする際の値エラー

    3. MySQLのユーザー名とパスワードを逆コンパイルから保護するにはどうすればよいですか?

    4. SQL Server(T-SQL)で2つのパーティションを1つにマージする