我想捕获删除行的用户名,当执行删除操作时,存储过程会从表中删除一行。我们为存储过程提供所有必需参数,并从正在删除数据的前端提供用户名。
基本上我想捕获从删除触发器中删除存储过程的用户名。但这是不可能的。我们可以做一件事,在删除记录之前,我们可以将用户的名字放入临时表,并从触发器获取该名称。但有一个问题是,两个用户一次可以删除两个不同的行。那么什么是最好的解决方案?我不想使用任何影子表。请讨论。感谢
答案 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)
如果您已经有了存储过程,为什么还要使用触发器呢?让存储过程日志删除该行。