2011-04-22 356 views
3

我想捕獲刪除行的用戶名,當執行刪除操作時,存儲過程刪除表中的一行。我們向存儲過程提供所有必需的參數,並提供正在刪除數據的前端的用戶名。關於SQL Server刪除觸發器

基本上我想捕獲從刪除觸發器存儲過程中刪除的用戶名。但這是不可能的。我們可以做一件事,在刪除記錄之前,我們可以將用戶的名字放入臨時表中,並從觸發器中獲取該名字。但是有一個問題,一次有兩個用戶可以刪除兩個不同的行。那麼最好的解決方案是什麼?我不想使用任何影子表。請討論。謝謝

回答

4

你基本上是問如何將參數傳遞給觸發器?

您可以在程序中使用set CONTEXT_INFO並在觸發器中讀取它。

DECLARE @name VARBINARY(128) 

SET @name = CAST('Martin' AS VARBINARY(128)); 


SET CONTEXT_INFO @name /*Set it*/ 

SELECT CAST(CONTEXT_INFO() AS VARCHAR(128)) /*Read it*/ 


SET CONTEXT_INFO 0x /*Reset it*/ 
+0

更多信息。謝謝 – Thomas 2011-04-23 10:06:33

2

如果你已經有了一個存儲過程,爲什麼還要使用觸發器?讓存儲過程日誌刪除該行。