2017-06-02 4 views
-1

Beim Erstellen eines DB2-Triggers (db2 Version 10.1 LUW) möchte ich die Benutzer-ID erfassen, die den Trigger initiiert.Verwenden Sie einen db2-Trigger, um den initiierenden Benutzer zu identifizieren

Wenn beispielsweise ein Benutzer Daten einfügt, sollte der After Insert-Trigger in ein Protokoll schreiben, wer die Daten eingefügt hat. Dies ist nicht für Produktionszwecke gedacht - es ist nur festzustellen, wer Testdaten aktualisiert/einfügt.

+0

Die Datenbank kann sich anmelden, was Abfragen ausgeführt wurden und welche Benutzer haben sie laufen. Warum nicht diese Funktionalität nutzen? –

+0

"DB2 Version 10" schlägt DB2 für z/OS vor, stimmt das? – mustaccio

+0

Beziehen Sie sich auf das Protokoll db2diag? Wir verwenden DB2 LUW. Lieber die Daten per Trigger erhalten. –

Antwort

1

Sie können den Wert der speziellen Registry-Variablen SESSION_USER erhalten. Als Alternative sehen Sie sich die SYSTEM_USER Registrierung an. Es gibt Unterschiede, wenn Sie Funktionen wie SET SESSION AUTHORIZATION verwenden oder TRUSTED CONTEXTS verwenden.

Versuchen Sie dies als Schnelltest:

select session_user from sysibm.sysdummy1; 
select system_user from sysibm.sysdummy1; 
+0

Danke. Das ist hilfreich. Wenn diese zusammenzusetzen, was die korrekte Syntax diese in einen Trigger zu übernehmen: Trigger userid.logchange erstellen nach Insert auf userid.css_defn Referenzierung neu, wie n für jede Zeile Modus DB2SQL beginnen Atom declare sessuser = Wählen Sie session_user aus sysibm.sysdummy1; deklarieren sysuser = select system_user aus sysibm.sysdummy1; In userid.applog (Beschreibung) -Werte einfügen ('** Datensatz einfügen ** css:' || coalesce (rtrim (char (n.css_id)), '') || 'Sitzungsbenutzer:' || sessuser | | 'Systembenutzer:' || sysuser) –

+0

Sie brauchen keine Auswahl, greifen Sie einfach auf session_user in der Definition von sessuser zu –

Verwandte Themen