Обсуждение: Implementing 2 different transactions in a PL/Perl function

Поиск
Список
Период
Сортировка

Implementing 2 different transactions in a PL/Perl function

От
"Jasbinder Singh Bali"
Дата:
Hi,

How can I have two different transactions is a plperlu function?
My purpose is as follows:-

Transaction 1 does some series of inserts in tbl_abc
Transaction 2 updates some columns in tbl_abc fetching records from some other table.

I basically want 2 independent transactions in my function so that 1 commits as soon as it is done and 2 doesn't
depend on it at all.

Thanks,
~Jas

Re: Implementing 2 different transactions in a PL/Perl function

От
Richard Huxton
Дата:
Jasbinder Singh Bali wrote:
> Hi,
>
> How can I have two different transactions is a plperlu function?
> My purpose is as follows:-
>
> Transaction 1 does some series of inserts in tbl_abc
> Transaction 2 updates some columns in tbl_abc fetching records from some
> other table.

You'll have to connect back to yourself using dblink() or dbilink() -
see contrib/ for details.

Don't forget to consider what it means to have a connection string in a
function-body either.

--
   Richard Huxton
   Archonet Ltd

Re: Implementing 2 different transactions in a PL/Perl function

От
Michael Glaesemann
Дата:
On Jul 10, 2007, at 14:41 , Jasbinder Singh Bali wrote:

> I basically want 2 independent transactions in my function so that
> 1 commits as soon as it is done and 2 doesn't
> depend on it at all.

If they're truly independent, I'd write them as two separate
functions., possibly calling both of them from within a third.

Michael Glaesemann
grzm seespotcode net



Re: Implementing 2 different transactions in a PL/Perl function

От
"Jasbinder Singh Bali"
Дата:
You mean to say keep using spi_exec till I want everything in the same transaction and the point where I want a separate transaction, use DBI ?

On 7/10/07, Richard Huxton <dev@archonet.com> wrote:
Jasbinder Singh Bali wrote:
> Hi,
>
> How can I have two different transactions is a plperlu function?
> My purpose is as follows:-
>
> Transaction 1 does some series of inserts in tbl_abc
> Transaction 2 updates some columns in tbl_abc fetching records from some
> other table.

You'll have to connect back to yourself using dblink() or dbilink() -
see contrib/ for details.

Don't forget to consider what it means to have a connection string in a
function-body either.

--
   Richard Huxton
   Archonet Ltd

Re: Implementing 2 different transactions in a PL/Perl function

От
Richard Huxton
Дата:
Jasbinder Singh Bali wrote:
> You mean to say keep using spi_exec till I want everything in the same
> transaction and the point where I want a separate transaction, use DBI ?

Yes - if you have two functions A,B then do everything as normal in
each, except you call function B using dblink() from function A. That
will give you a separate session which can commit/rollback separately
from the original.

--
   Richard Huxton
   Archonet Ltd