我想监视表的插入情况并使用已插入的值调用存储过程。
监控表(BatchDetails)将具有以下列 批处理ID、批处理开始时间、批处理结束时间
存储过程将使用已插入的最新 BatchID
注意: 一次始终只插入一行。
我一直在查看这个链接,但似乎有很多事情发生,即几个表。有没有简单的方法可以做到这一点?
最佳答案
您可以像这样使用触发器:
CREATE TRIGGER TR_Monitor_BatchDetails_Inserts
ON BatchDetails
AFTER INSERT
AS
BEGIN
DECLARE @BatchId INT
SELECT TOP 1 @BatchId = BatchId
FROM INSERTED
ORDER BY [PK_ColumnHere/Date/OtherOrderingColumn] DESC
EXEC SomeStoredProc @BatchId
END
但是它有一些缺陷:
1 - INSERTED
中可以有更多行(正在插入的行),这不会处理所有行
2 - 您可能希望从插入 BatchDetails
表的位置调用您的过程。也许有一个执行插入操作的过程,然后在其中添加对此过程的调用。这将是解决这个问题的更好方法。
希望这是有道理的
关于SQL 触发器以插入的值作为参数调用存储过程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46070259/