关于SQL Server删除触发器

时间:2011-04-22 19:45:34

标签: sql-server-2005

我想捕获删除行的用户名,当执行删除操作时,存储过程会从表中删除一行。我们为存储过程提供所有必需参数,并从正在删除数据的前端提供用户名。

基本上我想捕获从删除触发器中删除存储过程的用户名。但这是不可能的。我们可以做一件事,在删除记录之前,我们可以将用户的名字放入临时表,并从触发器获取该名称。但有一个问题是,两个用户一次可以删除两个不同的行。那么什么是最好的解决方案?我不想使用任何影子表。请讨论。感谢

2 个答案:

答案 0 :(得分: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*/

答案 1 :(得分:2)

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

相关问题