2011-03-21 63 views
1

我有一個sql觸發器用於審計我的數據庫表。 通過網絡界面更改數據。只有經過認證的用戶才能更改/添加數據。SQL觸發器 - 用自定義字段替換系統用戶

在觸發我有一個行代碼,說

select @UserName = system_user 

取而代之的system_user,我想UserId被分配到@UserName(經認證的網絡用戶)。 在表中找到每個行的UserId作爲其中一列。

我可以用什麼替換system_user來獲得這種效果。提前致謝。

+0

你需要告訴我們你正在使用什麼數據庫(RDBMS)。 – 2011-03-21 16:41:45

+0

看起來像SQL Server。那是對的嗎?如果是這樣的版本?你還問什麼?如何查找表中的東西,並將其分配給一個變量? – 2011-03-21 16:43:39

+0

是的。 SQL服務器 – AllRD 2011-03-21 16:45:08

回答

1

如果是SQL服務器,你可以簡單地從「插入的」表中查詢象下面這樣:

select @UserName =(select Your_USERID_ColumnName from inserted) 

隨着SQL Server在插入/更新和刪除發生有兩個虛擬表「插入的」和「刪除「,你可以查詢對

+0

感謝您的回覆。但是我收到以下errorMsg 207,級別16,狀態1,過程tblXXXXX_ChangeTracking,行77 無效的列名'UserId'。這是我正在運行此觸發器的每個表的消息。我可以在每個表格中看到UserId列。 – AllRD 2011-03-21 17:07:44

+0

是插入語句的UserId部分? – curtisk 2011-03-21 17:09:02

+0

謝謝。這工作完美。 – AllRD 2011-03-21 19:20:22