为了审计/历史表的目的,我正在使用 CONTEXT_INFO 将用户名传递给删除触发器。我正在尝试了解 CONTEXT_INFO 的范围以及是否正在创建潜在的竞争条件。
我的每个数据库表都有一个存储过程来处理删除。删除存储过程以 userId 作为参数,并将 CONTEXT_INFO 设置为 userId。然后我的删除触发器获取 CONTEXT_INFO 并使用它来更新审计表,该表指示谁删除了行。
问题是,如果同时执行来自不同用户的两个删除存储过程,那么其中一个存储过程中设置的 CONTEXT_INFO 是否可以被另一个存储过程触发的触发器使用?
我看过这篇文章http://msdn.microsoft.com/en-us/library/ms189252.aspx但我不清楚 SQL Server 中会话和批处理的范围,这是这篇文章有用的关键!
我会发布代码,但目前时间很短。如果这还不够清楚,我稍后会编辑。
提前感谢您的帮助。