2012-10-25 34 views
2

在我們的數據庫中我們有一個login表,特色彩色爲usernamepassword。如何在觸發器功能中檢索此用戶名,以便它也可以被審覈。 user關鍵字在觸發器函數中檢索postgresql用戶名,我需要的是應用程序用戶名。有什麼建議麼?在觸發功能內檢索用戶名

回答

2

您可以在postgresql.conf中設置自定義GUC。使用它在登錄時使用SET myapp_username來存儲應用程序用戶名。在觸發器中訪問current_setting(myapp_username)

或者,在用戶登錄時創建一個TEMPORARY表,並在登錄時將用戶的應用程序用戶名INSERT創建。 SELECT它在必要時觸發。

這兩者都要求用戶不能直接運行自定義SQL,當然,這通常是應用程序級別認證的要求,就像您使用的一樣。

更多詳細信息Passing user id to PostgreSQL triggers

+0

再次感謝,克雷格。很有幫助。 – Shalin

+1

@shalin我在另一個問題中寫了一個更詳細的回覆,以防你感興趣。它包含演示代碼,文檔鏈接和更多解釋。請參閱http://stackoverflow.com/q/13172524/398670 –