我有一个存储过程,它会更新列中的多行,如下所述:
update tableA
set isactive = 0
where email = ''
如果TableA
发生更改, tableALog
会有更新触发器插入isactive
。
现在,在执行update语句后的存储过程中,我需要获取tableALog
主键值。
我使用了以下方法,但没有运气。
@@identity
- 失败,因为它返回上次更新的值。但我需要在日志表中插入主键值列表
OUTPUT
已插入。 - 不能使用它,因为它始终适用于存储过程中的当前作用域。但我需要从触发器插入的表值。
如果您有任何建议,请与我们联系。
答案 0 :(得分:1)
这开始是一个评论,但它太长了,所以......
在存储过程和它们激活的触发器之间共享数据很棘手, 由于触发器不能获取参数,因此它们不能返回值 根据我的经验,实现这种事情的最佳方法是在表中添加一个列,设置触发器以识别触发器正在处理的记录,并为触发器添加一个表(可以是临时表)以输出要读取的数据和存储过程。