Обсуждение: Transaction-specific global variable

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

Transaction-specific global variable

От
Florian Weimer
Дата:
hstore greatly simplifies creating triggers for logging table changes,
which is great.  However, when creating a log record, I would like to
include information about the party who made this change.  We
generally do not allow direct database access for application code, so
the PostgreSQL user does not provide sufficient information on its
own.  Instead, I'd like to create a transaction-specific variable
which stores context information to be included in the log table.  I
suppose I could create a stored procedures in C which provides this
functionality, but I wonder if there is already something similar I
could reuse.  For instance, I could reuse the application_name
configuration variable, but this seems a bit gross.

(If you could recommend logging functionality I could learn from, that
would be welcome, too.)

--
Florian Weimer                <fweimer@bfk.de>
BFK edv-consulting GmbH       http://www.bfk.de/
Kriegsstraße 100              tel: +49-721-96201-1
D-76133 Karlsruhe             fax: +49-721-96201-99


Re: Transaction-specific global variable

От
Tom Lane
Дата:
Florian Weimer <fweimer@bfk.de> writes:
> hstore greatly simplifies creating triggers for logging table changes,
> which is great.  However, when creating a log record, I would like to
> include information about the party who made this change.  We
> generally do not allow direct database access for application code, so
> the PostgreSQL user does not provide sufficient information on its
> own.  Instead, I'd like to create a transaction-specific variable
> which stores context information to be included in the log table.  I
> suppose I could create a stored procedures in C which provides this
> functionality, but I wonder if there is already something similar I
> could reuse.  For instance, I could reuse the application_name
> configuration variable, but this seems a bit gross.

You could abuse the custom-GUC-variable mechanism: just set
custom_variable_classes and then define some variable that doesn't
actually have any underlying loadable module.
        regards, tom lane