2011-04-22 144 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

如果你已经有了一个存储过程,为什么还要使用触发器?让存储过程日志删除该行。