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