SQL 触发器以插入的值作为参数调用存储过程

标签 sql sql-server stored-procedures triggers sql-insert

我想监视表的插入情况并使用已插入的值调用存储过程。

监控表(BatchDetails)将具有以下列 批处理ID、批处理开始时间、批处理结束时间

存储过程将使用已插入的最新 BatchID

注意: 一次始终只插入一行。

我一直在查看这个链接,但似乎有很多事情发生,即几个表。有没有简单的方法可以做到这一点?

Call stored proc from after insert trigger

最佳答案

您可以像这样使用触发器:

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/

相关文章:

sql - PostgreSQL聚合函数选择2个对应字段

SQLite group_concat 选择 "special needs"

sql - SQL Server 2008 表中的默认 UpdatedBy Createdby 列

sql-server - 识别 SQL Server 性能问题

sql - 如果嵌套查询返回 null,则将列设置为某个值

c# - 运行存储过程时的 Entity Framework 问题

php - 在sql中添加新行

mysql - 查找最新记录 : left outer join vs. 降序排序

sql-server - 当 SQL Server 连接字符串中未指定端口号时会发生什么情况?

SQL Proc 在更新/更快的机器上变慢?