Re: Get current trasanction id
От | Marek Lewczuk |
---|---|
Тема | Re: Get current trasanction id |
Дата | |
Msg-id | 41D18108.1080901@lewczuk.com обсуждение исходный текст |
Ответ на | Re: Get current trasanction id (Joachim Zobel <jzobel@heute-morgen.de>) |
Список | pgsql-general |
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
В списке pgsql-general по дате отправления: