在SQL Server中发生之前,在触发器中选择上次更新的行ID和上次删除的行ID

use*_*392 2 t-sql sql-server triggers

我需要获取表中更新行的id以使用它通过触发器更新另一个表

还需要获取表中已删除行的id,以使用它通过触发器更新另一个表

我怎样才能做到这一点?

SQL Server中是否有内置函数?

如果不是什么样的技巧可以帮助实现这一目标

Jag*_*mag 5

在触发器中,如果您想知道更新/删除的OLD值

SELECT idColumnName FROM deleted
Run Code Online (Sandbox Code Playgroud)

idColumnName包含您感兴趣的ID的列在哪里 .

然后,您可以使用此ID值执行所需的任何处理.另外.如果您想使用正在更新的NEW值,下面的查询会为您提供.这对于要比较某些字段的旧/新值的更新的情况尤其有用.在您的情况下,由于它是一个ID列,这可能不相关

SELECT idColumnName FROM inserted
Run Code Online (Sandbox Code Playgroud)

  • JUst不要假设只有一条记录.编写您必须处理的代码,假设插入和/或删除的表将包含多行.假设只有一条记录被改变是触发器写入中最大的一个错误.使用游标遍历所有记录是下一个最糟糕的错误,使用基于集合的过程来处理多个记录. (2认同)