2017-06-02 47 views
-1

當創建DB2觸發器(db2版本10.1 LUW)時,我正在尋找捕獲啓動觸發器的用戶標識。使用db2觸發器來標識啓動的用戶

例如,如果用戶插入數據,後插入觸發器應寫入誰插入數據的日誌。這不是爲了生產目的 - 僅僅是確定誰在更新/插入測試數據。

+0

數據庫可以記錄哪些查詢已運行,​​哪些用戶已運行它們。爲什麼不使用該功能? – 2017-06-02 15:04:07

+0

「db2 version 10」建議DB2 for z/OS,是否正確? – mustaccio

+0

你指的是db2diag日誌嗎?我們正在使用DB2 LUW。傾向於通過觸發器獲取數據。 –

回答

1

您可以獲取SESSION_USER特殊註冊表變量的值。作爲替代看看SYSTEM_USER註冊表。如果使用SET SESSION AUTHORIZATION之類的功能或使用TRUSTED CONTEXTS,則會有差異。

試試這個作爲一個快速測試:

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

謝謝。這很有幫助。把當此一起,什麼是正確的語法納入觸發此: 上userid.css_defn 引用新創建觸發器userid.logchange 插入 後正 每一行模式DB2SQL 開始原子 聲明sessuser =從sysibm.sysdummy1中選擇session_user; 聲明sysuser =從sysibm.sysdummy1中選擇system_user; ('** Insert record ** css:'|| coalesce(rtrim(char(n.css_id)),'')||'會話用戶:' || sessuser | 插入到userid.applog |'系統用戶:'|| sysuser) –

+0

你不需要任何選擇,只需在sessuser的定義中訪問session_user –