Отключите автоматическую фиксацию с помощью postgresql dblink

Я использую dblink для фиксации и отката в своей функции, есть ли способ отключить автоматическую фиксацию с помощью соединения dblink в postgresql? Мне не нужно постоянно отключать автофиксацию для базы данных (т.е. с помощью файла 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;

person skotian    schedule 06.12.2018    source источник
comment
Я думаю, вам нужно будет выполнить полный begin; insert ..; commit; как один вызов dblink, а не как три отдельных.   -  person a_horse_with_no_name    schedule 06.12.2018
comment
Поскольку dblink создает новое соединение, фиксация/откат работает, когда я отключаю автофиксацию для всей базы данных с помощью файла psqlrc. Но я хочу контролировать отключение автоматической фиксации с помощью dblink, а не отключать автоматическую фиксацию навсегда. Является ли это возможным ? Или... есть ли способ отключить автофиксацию только для одного пользователя базы данных?   -  person skotian    schedule 06.12.2018