使用Postgresql dblink设置自动提交关闭

时间:2018-12-06 05:59:48

标签: postgresql commit rollback dblink autocommit

我在函数中使用dblink进行提交和回滚,是否有办法在PostgreSQL中使用dblink连接设置自动提交功能?我不需要永久关闭数据库的自动提交功能(即使用psqlrc文件)

    CREATE OR REPLACE FUNCTION test() RETURNS VOID AS $BODY$
    declare                                                                      
        v_sql varchar;                                                          
        v_int int;                                                              
    begin                                                                       
        perform  dblink_connect('pg', 'myconn');
        v_sql := 'begin;';                                                      
        perform dblink_exec('pg', v_sql);
        v_sql := 'insert into testlog values (''aa'')';                              
        perform dblink_exec('pg', v_sql);

        v_sql := 'commit;';                                                     
        perform dblink_exec('pg', v_sql);

        perform dblink_disconnect('pg');                                        
    exception                                                                   
    when others then                                                          
        v_sql := 'rollback;';                                                 
        perform dblink_exec('pg', v_sql);                                     
        perform dblink_disconnect('pg');                                      
        raise exception '%', sqlerrm;                                 
    end;
    $BODY$
    LANGUAGE plpgsql VOLATILE
    COST 100;

0 个答案:

没有答案