Nutzer in Triggerfunktion ermitteln

verschiedene Clients melden sich mit dem gleichen Datenbankbenutzer an (also CURRENT_USER scheidet aus)
ist es möglich, beim Auslösen eines Triggers, eindeutige Informationen des Clients zu ermitteln (im Sinne von, wer hat den Datensatz geändert/gelöscht)

Denkansätze:
läuft der Trigger in der gleichen Session, in der der Trigger ausgelöst wird?
kann man beim Login irgendwelche Infos hinterlegen (Hostname, OS-Username)
könnte die PID aus pg_stat_activity helfen

Danke für alle hilfreichen Infos

test=*# select pg_backend_pid();
 pg_backend_pid 
----------------
          17153

test=*# select application_name from pg_stat_activity where pid = pg_backend_pid();
 application_name 
------------------
 psql
(1 row)

test=*# set application_name to pg_forum;
SET
test=*# commit;
COMMIT
test=# select application_name from pg_stat_activity where pid = pg_backend_pid();
 application_name 
------------------
 pg_forum
(1 row)

mal so als ideen …

An den Betriebssystem Benutzer des Client kommt man in Postgres nicht ran.

Bitte beachte, dass der “application_name” vom Client gesetzt wird und alles Mögliche enthalten kann. Für ein auditing ist das meiner Meinung nach nicht geeignet.

Das einzige was zuverlässig ist, ist die IP Adresse des Client.

Danke für die Antworten
kann man davon ausgehen, dass jede Session seine eigene Prozess-ID hat (Connection Pool, usw.)
bei Verbindungen von einem Terminalserver hat mal leider mit der IP-Adresse wieder ein Problem…

das ist etwas kompliziert … eine Abfrage kann z.B. via mehrerer worker-prozesse ablaufen, in dem Fall kannst Du die worker in pg_stat_activity sehen, aber ohne die client-ip.

Danke für die Anregungen…

Dieses Thema wurde automatisch 60 Tage nach der letzten Antwort geschlossen. Es sind keine neuen Nachrichten mehr erlaubt.