Joachim Zobel napisaÅ(a):
Am Mo, den 27.12.2004 schrieb Marek Lewczuk um 20:54:

Michael Fuhr napisaÅ(a):

Why do you want the transaction ID?  What problem are you trying
to solve?


I've already solved the problem - I found somewhere on the web a very simple C function, which returns transaction id. I need transaction id for plperl functions setVar, getVar (using $_SHARED array). Functions can write/read variables which are available either for connection or transaction.


It would be nice to have that in pgplsql. I once needed a transaction Id
in oracle for a historisation trigger. It saves before copies of the
modified records on a per transaction basis.
As I wrote before you can have it in plpgsql - you just need to install special c function as e.g getCurrentTransactionId() and you will be able to get id from within plpgsql - but I agree that this function should be in base SQL functions or at least in contrib modules.

C function is very simple:

getcurrenttransactionid.c:
#include "postgres.h"
#include "access/xact.h"

Datum getcurrenttransactionid(PG_FUNCTION_ARGS)
{
        TransactionId xid = GetCurrentTransactionId();
        PG_RETURN_INT32((int32) xid);
}


getcurrenttransactionid.sql: SET search_path = public;

CREATE FUNCTION getCurrentTransactionId()
        RETURNS integer
        AS 'MODULE_PATHNAME'
        LANGUAGE 'c';



Regards,

Marek Lewczuk



---------------------------(end of broadcast)---------------------------
TIP 3: if posting/reading through Usenet, please send an appropriate
     subscribe-nomail command to [EMAIL PROTECTED] so that your
     message can get through to the mailing list cleanly

Reply via email to